经典错误:插入for循环后程序无法运行
标签:C语言 死循环
by 小威威
本文的目的主要是为大家提供查找问题的思路。
前几日我写了一个程序:
# include <stdio.h>
int main(void) {
int N, x, y, m = 0, n = 0, i, h = 0, a[50] = {0};
scanf("%d%d%d", &N, &x, &y);
printf("%d ", x);
for (i = x; i < N; i++) {
if (i == x) continue;
if (a[i] == 0) m++;
if (m == y) {
a[i] = 1;
printf("%d ", i);
h = i;
m = 0;
}
if (i == N-1) {
i = -1;
for (int j = 0; j < N; j++) {
if (a[j] == 0) n++;
}
if (n < y)
break;
}
}
for (i = h; i < N; i++) {
if (a[i] == 0) printf("%d ", i);
}
return 0;
}
运行程序后我输入数据,然而并没有输出。
最奇怪的地方在于连第一个printf都无法输出。
于是我将第一个for循环删去,发现程序正常输出,由此我判断:问题应该是出现在for循环。后经过研究,发现了这个循环是一个死循环,改正错误后程序便正常运行了。
这道题目得到的经验便是:
当一个程序不能正常输出时,有可能是死循环在捣鬼,应该立刻检查本程序中的循环部分。
以上内容皆为本人观点,欢迎大家提出意见,我们一起探讨!