我是C新手并且遇到了以下问题。有人可以解释循环计算利息和总和的问题吗?这是代码:
#include <stdio.h>
/*simple interest rate calculator */
int main()
{
int year, y;
float sum, interest, i; // i = interest after iteration
y = 0;
i = 0;
printf("Provide a sum you want to invest(in pence):\n");
scanf("%f", &sum);
printf("Provide interest rate:\n");
scanf("%f", &interest);
printf("For how long would you like to save(in years):\n");
scanf("%d", &year);
/*for(y = 1; y <= year; y++)
i = sum * interest/100;
sum += i; */
do
{
i = sum * interest/100;
sum += i;
}
while (y == 1 && y<= year);
printf("Original sum %0.0f at %0.1f rate for %d years:\n\n", sum, interest, year);
printf(" Year Interest Sum\n");
printf("--------+--------+--------\n");
for(y = 1; y<= year; y++)
printf("%5d %11.2f %5.2f\n", y, i, sum);
return 0;
}
输出是: 原始金额为33750,年利率为12.5,为期10年:
年度利息总和
-------- + -------- + --------
1 3750.00 33750.00
2 3750.00 33750.00
3 3750.00 33750.00
4 3750.00 33750.00
5 3750.00 33750.00
6 3750.00 33750.00
7 3750.00 33750.00
8 3750.00 33750.00
9 3750.00 33750.00
10 3750.00 33750.00
并且每行应该采用新的总和并相应地计算。
非常感谢任何提示。
答案 0 :(得分:2)
do
{
i = sum * interest/100;
sum += i;
}
while (y == 1 && y<= year);
在此循环中,y
的值不会更改,因此第二次条件为false,因为y
初始化为0
。因此sum
的值保持不变在1st
迭代之后。在此循环中递增y
并将条件更改为
while ( y<year);// y<year because y is initialized to 0
我真的不明白你使用这个循环的原因 -
for(y = 1; y<= year; y++)
printf("%5d %11.2f %5.2f\n", y, i, sum);
它将在每次迭代中打印相同的值。如果您想每年打印interst
和sum
值,您应该使用上面printf
中的while loop
语句。
答案 1 :(得分:0)
你的do while()循环只运行一次,因为其中一个条件是&#34; y == 1&#34;在递增y后将评估为false,因此循环停止。 你也不会在任何地方增加y,因为它被初始化为0,它也不能满足条件。
答案 2 :(得分:0)
我认为你需要这样的东西。
int y = 1; // initialize with 1
printf(" Year Interest Sum\n");
printf("--------+--------+--------\n");
do
{
i = (sum * interest)/100; // it will calculate sum+interest for 1 year.
sum += i;
y++;
printf("%5d %11.2f %5.2f\n", y, i, sum);
}
while (y <= year); // you can compare y > 0 also in case you kept y = 0
printf("Original sum %0.0f at %0.1f rate for %d years:\n\n", sum, interest, year);