首先要做的事情是打开警告。 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