首先要做的事情是打開警告。 C編譯器通常不會給你警告,通常是-Wall
來獲得基礎(不是全部)。一旦我們做到這一點...
test.c:17:36: warning: format specifies type 'int' but the argument has type 'double' [-Wformat]
printf("%d $%d\n", year, output);
~~ ^~~~~~
%f
這告訴我們你傳遞一個浮點數printf
而是試圖把它當作一個整數,所以它會被錯誤地翻譯成字符串。它需要。
printf("%d $%.2f\n", year, output);
%f
一個浮點數,以及.2
表示只使用兩位小數喜歡錢。
test.c:9:14: warning: expression result unused [-Wunused-value]
rate + 0.01;
~~~~^~~~~
2 warnings generated.
這一次告訴我們,rate
永遠不會增加。它被添加到,但從未存儲在任何地方。相反,你想要rate += 0.01
。
現在運行。一旦。並且它僅在第11年報告。
問題是您的外部do/while循環使用的是year
,但for
循環將以threshhold的年份結束,因此它會立即停止。很少需要使用do/while循環,而不是使用另一個for循環。
第二個問題是你打印輸出和year
for
循環以外的年份。所以你只能得到去年的結果。如果你想要這麼多年,印刷品就會進入內部。
#include <stdio.h>
int main(void)
{
const double initial_loan = 1000.00;
for(double rate = 0.01; rate <= 0.10; rate += 0.01) {
double loan = initial_loan;
for (int year = 1; year <= 10; year++) {
loan += rate*loan;
printf("%d @ %.2f%% $%.2f\n", year, rate * 100, loan);
}
}
return 0;
}
請注意,我聲明變量的範圍最窄。這會告訴你它們何時適合使用,並避免像在外部循環中嘗試使用year
這樣的混亂。
大量的C材料將非常保守,並告訴你在函數開始時聲明所有變量。這不是必需的,並且已經很長很長時間了。雖然在for
循環中聲明變量是C99的事情,但C99的這一部分得到很好的支持。
'rate + 0.01'沒有任何用處 –
用戶是否必須輸入任何內容?我不清楚要理解你實際上想要什麼程序。輸出應該是什麼樣子? – 2017-02-18 18:04:22
用戶不輸入任何內容。該計劃應該輸出一張表格顯示費率和利率是在那個速度。所以它應該輸出10行的利息和相應的利息總額 – dreed