|
Post by huangno1 on Feb 25, 2017 6:36:29 GMT -8
程式說明
老科最近開始規畫他的退休生活,假設投資報酬率是10%,且以複利計算,若每年存入100,000元,則前三年的退休金變化如下:
第一年 100,000*(1+10%) = 110,000
第二年 (110,000+100,000)*(1+10%) = 231,000
第三年 (231,000+100,000)*(1+10%) = 364,100
(1) 支援函式:RequiredNumYears()
(1.1) 該函式的第一個參數deposit,為整數型態,代表每年存入的金額。
(1.2) 該函式的第二個參數rate,為double型態,代表投資報酬率。
(1.3) 該函式的第三個參數goal,為整數型態,代表期望擁有的總退休金。
(1.4) 該函式的回傳值為整數型態,代表依照上述三者以複利計算,最少需多少年其退休金才會不小於期望擁有的總退休金。
(1.5) 呼叫 RequiredNumYears(100000, 0.1, 105000) 應傳回 1;
呼叫 RequiredNumYears(100000, 0.1, 110001) 應傳回 2;
呼叫 RequiredNumYears(100000, 0.1, 300000) 應傳回 3;
呼叫 RequiredNumYears(100000, 0.1, 364100) 應傳回 3。
(2) 主函式功能:
當使用者選擇此功能,他將會輸入預計的投資報酬率和期望擁有的總退休金,請輸出每年存入10000, 20000, 30000, …, 100000,各需要多少年才能達成目標。
提示:利用迴圈呼叫 RequiredNumYears() 以取得需要的年數,並依序印出。
#include <stdio.h>
int RequiredNumYears(int deposit, double rate, int goal)
{
double money = 0 ;
int year = 0 ;
for ( year = 0 ; money <= goal ; year ++ )
{
money = ( money + deposit ) * ( 1 + rate ) ;
}
return year;
}
int main()
{
double rate = 0;
int goal = 0;
scanf("%lf %d", &rate, &goal);
for (int d= 10000 ; d<= 100000 ; d+= 10000 )
{
printf("Depositing $%d/year needs %d years.\n", d , RequiredNumYears ( d , rate , goal ) );
}
return 0;
}
|
|