You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言程序scanf不停止、无输出且持续请求输入的问题排查

程序陷入无响应(持续要求输入、无输出)的原因及修复

你的程序出现问题的核心原因是**value函数中的内层循环存在致命错误,导致程序进入无限循环**,无法执行到输出逻辑,同时因进程未终止,输入交互表现异常。

具体错误点:

在value函数的内层for循环中,存在两个严重问题:

  1. 迭代变量错误:循环初始化了j,但后续却递增参数b而非j。这不仅会破坏原参数b的取值,还会让j始终保持初始值b-l,完全无法遍历目标范围。
  2. 循环条件永远为真:循环条件写为b < b + l + 1,只要平滑因子l是非负整数(符合作业要求的场景),这个表达式永远成立——因为b + l +1必然大于b,直接导致内层循环变成无限循环。

程序在调用value函数时会卡死在这个无限循环中,根本无法继续执行后续的输出代码,也不会终止进程,因此看起来像是scanf一直在要求输入,但实际程序已经停止响应。

修复后的value函数代码:

int value(int **arr, int a, int b, int n, int l) {
    int val = 0;
    // 修正循环变量与条件,遍历i-l到i+l、j-l到j+l的范围
    for (int i = a - l; i <= a + l; i++) {
        for (int j = b - l; j <= b + l; j++) {
             if (i >= 0 && i < n && j >= 0 && j < n) {
                 val += arr[i][j];
             }
        }
    }      
    return val;
}

额外需要修正的小问题:

原main函数中的换行输出语句存在语法错误:

printf("
");

需要修正为标准的换行写法:

printf("\n");

修复后程序流程:

修正上述错误后,程序会正常完成矩阵输入,调用value函数计算每个元素的平滑和,最后输出结果,不会再出现无限要求输入的情况。

内容的提问来源于stack exchange,提问作者Sahil Gautam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 17:42:28