Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么这个循环在第二次运行时不迭代?_C_Loops - Fatal编程技术网

C 为什么这个循环在第二次运行时不迭代?

C 为什么这个循环在第二次运行时不迭代?,c,loops,C,Loops,我是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 yo

我是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;

  } 
#包括
/*简易利率计算器*/
int main()
{
整年,y;
浮点和,利息,i;//i=迭代后的利息
y=0;
i=0;
printf(“提供您想要投资的金额(单位:便士):\n”);
scanf(“%f”,和);
printf(“提供利率:\n”);
scanf(“%f”和利息);
printf(“您希望保存多长时间(以年为单位):\n”);
scanf(“%d”和“年”);
/*对于(y=1;y
编辑
我真的不明白你为什么用这个循环-

for(y = 1; y<= year; y++)
printf("%5d %11.2f %5.2f\n", y, i, sum);
for(y=1;y您的do while()循环只运行一次,因为其中一个条件是“y==1”,在您增加y后,该条件将计算为false,因此循环停止。

你也不需要在任何地方增加y,因为它被初始化为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);
int y=1;//用1初始化
printf(“年利息总额”);
printf(“----------+----------+-----------\n”);
做
{   
i=(总和*利息)/100;//它将计算1年的总和+利息。
总和+=i;
y++;
printf(“%5d%11.2f%5.2f\n”,y,i,和);
}   
而(y 0)也是在保持y=0的情况下
printf(“原始金额%0.0f,利率为%0.1f,为期%d年:\n\n”,金额、利息、年份);

y==1&&yan循环体中的
y
值没有变化。我真的没有了解你的程序流程。非常感谢,终于了解了。是的,希曼舒,这几乎就是我在阅读上述帖子后所做的。无论如何,非常感谢。
for(y = 1; y<= year; y++)
printf("%5d %11.2f %5.2f\n", y, i, sum);
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);