【发布时间】:2021-01-26 16:35:48
【问题描述】:
#include <cs50.h>
#include <stdio.h>
int main(void)
{
// TODO: Prompt for start size
int n,m,y,b,a;
do{
n= get_int("Start Size");
}
while(n <9);
// TODO: Prompt for end size
do
{
m = get_int("End Size");
}
while(n > m);
// TODO: Calculate number of years until we reach threshold
for (y=0;n>m;y++)
{
a = n/3;
b = n/4;
y= n + a-b;
}
// TODO: Print number of years
{
printf("Years:%i\n",y);
}
}
请您告诉我为什么会收到此错误(循环条件中使用的变量“n”和“m”未在循环主体中修改)?
【问题讨论】:
-
有问题的循环可能是
for (y=0;n>m;y++)(这应该很容易看出我们是否可以看到完整的实际错误消息)。变量n和m在条件n>m中使用,但它们在循环内的任何地方都不会被修改。因此,如果条件n>m为真,它将永远保持为真,并且您有一个无限循环。 -
最后一个循环使用条件
n > m。但它只更新a、b和y。所以条件不会改变,循环将无限执行或根本不执行。 -
关于该循环的另一个注释,您修改
y两次。一次进入y= n + a-b;,然后再次进入y++。 -
如果你能解释一下这段代码应该做什么,这会有所帮助。
-
鉴于
do { … } while (n > m);循环,后续的for (y = 0; n > m; y++)将永远不会被执行。