【问题标题】:Why does it stop even though I used continue?为什么即使我使用了继续它也会停止?
【发布时间】:2022-01-11 14:36:06
【问题描述】:

使用 while 循环和条件语句进行基本编码。但是我遇到了一个问题,我忘记了故障在哪里。

所以这里发生的情况是,代码会要求用户输入“加载”的起点和终点,然后它就会执行此操作。问题是代码应该排除开始和结束整数之间可被 4 整除的数字。

但在我的情况下,即使我使用了“继续”,循环也会在 3 处突然停止。在“while”行下方的 if 语句中,我应该如何解决这个问题? 'output'

无论如何,这是我的代码。

#include<stdio.h>
int main(){
int start, end;

printf("Enter the starting point: ");
scanf("%d", &start);
printf("Enter the ending point: ");
scanf("%d", &end);

while(start <= end){
    if(start % 4 == 0){
        continue;
    }
    printf("Loading...%d%\n", start);

    start++;
}

return 0;

}

【问题讨论】:

  • 请对“输入”(start 和 end 的值)进行硬编码,并使用调试器单步执行代码以查看实际发生的情况。
  • 您的循环不会停止,它实际上会无限运行,因为当 start == 4 时,您将停留(继续)在 while 循环中,因此永远不会到达 start++;
  • @RedaMeskali 哦,我明白你的意思了,我应该如何解决它?当我删除条件语句时,它运行顺利,但它在其中,它无限运行。

标签: c while-loop conditional-statements continue


【解决方案1】:
while(start <= end){
    if(start % 4 != 0){
        printf("Loading...%d%\n", start);
    }
    start++;
}

这是一个确实涉及继续的建议。

【讨论】:

  • 哦,成功了!非常感谢!但我只想知道,是“继续”;错误,如果是,为什么?
  • 只需在 start == 4 时检查您的代码,看看会发生什么
  • @OverHeaven 想想你想在何时何地增加start...也许for 循环会更好?
【解决方案2】:

continue 关键字没有任何问题。问题是您的 start 变量在继续执行时不会增加。你可以像这样使用continue。因此,start 变量在继续之前会递增。

if(start % 4 == 0){
    start++;
    continue;
}

还有一点要补充。 printf("Loading...%d%\n", start); 这一行应该得到一些警告。因为在printf() 上,% 对格式化变量有特殊的意义。所以你应该使用printf("Loading...%d%%\n", start); 来消除这个警告。

【讨论】:

  • 我会记住这一点的,非常感谢!
猜你喜欢
  • 2021-05-03
  • 2022-12-07
  • 2017-02-26
  • 1970-01-01
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
  • 2019-12-30
  • 2017-05-05
相关资源
最近更新 更多