2011-01-24 77 views
0

//,經過N年以下代碼有什麼問題?

#include <stdio.h> 

double bank(double money, double apy, int years); 

int main() { 

double money1, apy1; 
int years1; 

printf("How much money is currently in your bank account? "); 
scanf("%d", &money1); 

printf("How many years will this money stay in your account? "); 
scanf("%d",&years1); 

printf("What is your APY? "); 
scanf("%d", &apy1); 

int bank1 = bank(money1, apy1, years1); 

printf("Your grand total after %d will be $%d \n", years1, bank1); 


system ("PAUSE"); 
return 0; 
} 


double bank(double money, double apy, int years) { 

if(years <= 0) 
    return money; 

else 
    return bank(money*apy, apy, years-1); 

} 
+6

認真嗎? 「這個代碼有什麼問題?」是你的全部「問題」? – 2011-01-24 21:54:04

+3

它不是在編譯?它是否以其他方式失敗?恐怕你必須更具體。 – 2011-01-24 21:54:22

+0

它沒有正確計算總數。 – kachilous 2011-01-24 21:57:56

回答

4

發生很大的變化:

scanf("%d", &money1); 

scanf("%lf", &money1); 

和變化:

scanf("%d", &apy1); 

到:

scanf("%lf", &apy1); 

雖然你在它你可能想添加一些printfs輸出,以幫助調試(假設你沒有源代碼級調試。 )

4

這在計算銀行賬戶的金額的程序:

return bank(money*apy, apy, years-1); 

也許應該

return bank(money*(1+apy), apy, years-1); 

,因爲你賺利息應該添加到現有的金額。否則,您的總金額將每年減少。

0

我想你應該叫你按以下方式運作:

int bank1 = bank(money1, 1+apy1/100., years1); 

否則你有很多錢:)

2

另一條是:

double bank(double money, double apy, int years); 

返回double,

int bank1 = bank(money1, apy1, years1); 

將結果放在int中。