C言語の数学関数を使って利息を含む最終金額を計算する方法
本記事では、C言語の数学関数(exp関数)を活用して、預け入れた金額が利息によって何年後にいくらになるかを計算するプログラムを紹介します。複利計算の基本的な考え方と、実際のコード実装までをわかりやすく解説します。
問題
銀行に預け入れた金額が、一定の利率で一定年数経過した後、利息を含めていくらになるかを求めるC言語プログラムを作成してください。
解法
利息を含む最終金額は、以下の数式で計算できます。
M = ((r / 100) * t); A = P * exp(M);
各変数の意味は次のとおりです。
- r:年利率(%)
- t:預ける年数
- P:預け入れる元金
- M:中間計算用の一時変数
- A:利息を含んだ最終金額
ここで使用している exp(M) は、math.h ヘッダーに定義されている指数関数 eM を返すライブラリ関数です。この式により、連続複利に基づいた最終金額を求めることができます。
アルゴリズム
プログラムの処理手順は以下のとおりです。
START
Step 1: double型の変数を宣言する
Step 2: 預け入れる元金を入力する
Step 3: 年利率を入力する
Step 4: 預ける年数を入力する
Step 5: 利息を含む最終金額を計算する
I. M = ((r / 100) * t);
II. A = P * exp(M);
Step 6: 最終金額を出力する
STOP
サンプルコード
上記のアルゴリズムをC言語で実装すると、次のようになります。
#include <stdio.h>
#include <math.h>
#include <ctype.h>
int main(){
double P, r, t, A, M;
printf("銀行に預け入れる金額: ");
scanf("%lf", &P);
printf("\n 年利率を入力してください: ");
scanf("%lf", &r);
printf("\n 預ける年数を入力してください: ");
scanf("%lf", &t);
M = ((r / 100) * t);
A = P * exp(M);
printf("\n %0.1lf年後の利息を含む金額は: %0.2lf です", t, A);
return 0;
}
ポイント解説
#include <math.h>を忘れるとexp()関数が使えず、コンパイルエラーになる場合があります。- 金額や利率は小数を扱うため、
double型を使用し、scanfでは書式指定子%lfを使います。 - 出力時には
%0.2lfのように桁数を指定することで、金額を見やすく表示できます。
実行結果
元金50,000円、年利率6.5%、預入期間5年で実行した場合の出力例です。
銀行に預け入れる金額: 50000 年利率を入力してください: 6.5 預ける年数を入力してください: 5 5.0年後の利息を含む金額は: 69201.53 です
このように、元金50,000円が5年後には約69,201円に増加することが確認できます。指数関数を使った複利計算は、金融シミュレーションなどさまざまな場面で応用できるので、ぜひマスターしておきましょう。
-
C言語で文字列⇔数値の相互変換を行う方法|sscanf関数とsprintf関数の使い方
はじめにC言語のプログラミングにおいて、「文字列から数値への変換」および「数値から文字列への変換」とは何を意味するのでしょうか?本記事では、標準ライブラリ関数を使った双方向の変換方法を、構文・サンプルコード・実行結果とあわせて解説します。解決策:使用する2つの関数C言語には、この変換を実現するための関数が用意されています。sscanf() ― 文字列を数値に変換するsprintf() ― 数値を文字列に変換する文字列から数値への変換(sscanf)sscanf()関数を使うことで、文字列として格納されたデータを、書式指定子に従って解析し、数値として各変数に読み込むことができます。scanf()
-
C言語のポインタ演算とは?宣言・初期化から算術演算の基本までわかりやすく解説
ポインタ(pointer)とは、他の変数のメモリアドレスを格納するための変数です。C言語においてポインタは非常に重要な概念であり、配列や文字列の操作、関数間でのデータ受け渡しなど、さまざまな場面で活用されます。本記事では、ポインタの宣言・初期化の方法と、ポインタを使った算術演算について詳しく解説します。ポインタの宣言・初期化・アクセスまず、次のような文を例に考えてみましょう。int qty = 179;この文では、整数型変数 qty を宣言し、179 という値で初期化しています。変数 qty はメモリ上のどこかに配置され、そこに値が保存されます。ポインタの宣言int *p;ここで「p」はポイン