为什么我编写的C语言循环会无限重复输出相同内容?
问题排查与修复
报错原因
- 输入读取逻辑
scanf("%d", &n);仅在循环外执行了一次,变量n的值在循环运行过程中没有更新。首次输入为3的倍数时,循环内每次判断n%3的结果永远为0,因此会无限输出(1)。 else分支的continue语句会直接进入下一轮循环,没有预留读取新输入的逻辑,进一步加剧了死循环问题。
修复后可运行代码
#include <stdio.h> #include <stdlib.h> int main(){ int n; while(1){ // 每次循环都读取新的输入值更新n scanf("%d", &n); if(n % 3 != 0){ printf("(0)\n"); break; }else{ printf("(1)\n"); } } return 0; }
修复逻辑说明
- 将输入读取语句移动到循环内部,每次循环都会读取新的用户输入更新
n的值,避免一直使用首次输入的数值做判断。 - 移除了冗余的
continue语句,else分支代码执行完成后会自动进入下一轮循环,运行效果与原有逻辑一致,代码更简洁。
内容的提问来源于stack exchange,提问作者nobody
相关产品推荐
相关产品推荐

