【问题标题】:I am stuck with that error variables 'n' and 'm' used in loop condition not modified in loop body我被困在循环条件中使用的错误变量'n'和'm'没有在循环体中修改
【发布时间】: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&gt;m;y++)(这应该很容易看出我们是否可以看到完整的实际错误消息)。变量nm 在条件n&gt;m 中使用,但它们在循环内的任何地方都不会被修改。因此,如果条件n&gt;m 为真,它将永远保持为真,并且您有一个无限循环。
  • 最后一个循环使用条件n &gt; m。但它只更新aby。所以条件不会改变,循环将无限执行或根本不执行。
  • 关于该循环的另一个注释,您修改y 两次。一次进入y= n + a-b;,然后再次进入y++
  • 如果你能解释一下这段代码应该做什么,这会有所帮助。
  • 鉴于do { … } while (n &gt; m);循环,后续的for (y = 0; n &gt; m; y++)将永远不会被执行。

标签: c for-loop cs50


【解决方案1】:

结束循环的条件不依赖于循环内的任何变化。所以循环要么永远不会执行,要么永远执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 2016-06-01
    • 2012-10-20
    • 1970-01-01
    • 2020-03-01
    • 2010-12-01
    相关资源
    最近更新 更多