我的C程序必须包含一个提高利率的循环,以及一个计算利息并显示每个利率总计的嵌套循环。有人能指出我正确的方向吗?
该计划应输出10个利率和相应的总利息加上贷款
利率从.01(1%)开始,应该以.10(10%)结束。
#include <stdio.h>
int main(void)
{
double loan = 1000.00, rate = 0.01, output;
int year = 1;
do {
rate + 0.01;
for (year = 1; year < 11; year++) {
output = rate * loan + loan;
}
printf("%d $%d\n", year, output);
} while (year < 11);
return 0;
}
答案 0 :(得分:0)
首先,首先打开警告。 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
循环将以阈值处的年份结束,因此它将立即停止。而不是使用很少需要的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的那部分得到了很好的支持。