本程式模擬銀行定存複利計算,輸入本金與固定年利率(預設 3.5%),計算經過多少年本利和會超過本金的兩倍(即翻倍)。
已知本金 a,年利率 x%(程式固定 0.035),求最少存幾年使得本利和 s >= 2*a。每年結算一次利息,利息計入本金(複利)。
begin_money 追蹤年初本金,late_money 追蹤年末本利和。late_money < 2 * money,每年:late_money += begin_money * rate(計算利息並加入)begin_money = late_money(更新下一年年初本金)i-1)。/* 程式標頭註解 */
#include <stdio.h>
void star(void);
int main()
{
int i;
float money, begin_money, late_money = 0.0;
float rate = 0.035;
star();
printf("\t\t\t歡迎來到樂多多銀行\n");
printf("我們銀行的利息率為%0.3f.\n\n", rate);
printf("請輸入您要的存入的錢:");
scanf("%f", &money);
begin_money = late_money = money;
for(i = 1; late_money < 2 * money; i++)
{
late_money += begin_money * rate;
begin_money = late_money;
printf("第%2d年後,你會有%0.3f元。\n", i, late_money);
}
printf("\n%d年後,您就有%0.3f元,此時本、利和翻了一番\n", i-1, late_money);
printf("\n哈哈, 謝謝您的合作!\nGOOD BYE!\n");
star();
return 0;
}
void star(void)
{
int i;
for(i = 0; i < 60; i++) printf("*");
printf("\n");
}

複利公式:A = P(1+r)^n。令 A = 2P 解得 n = ln(2)/ln(1+r)。
當 r = 0.035 時,n ≈ 20.15,故第 21 年翻倍,與程式輸出一致。