2011-01-24 75 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中。