经典错误:插入for循环后程序无法运行

经典错误:插入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循环。后经过研究,发现了这个循环是一个死循环,改正错误后程序便正常运行了。

这道题目得到的经验便是:

当一个程序不能正常输出时,有可能是死循环在捣鬼,应该立刻检查本程序中的循环部分。


以上内容皆为本人观点,欢迎大家提出意见,我们一起探讨!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值