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

C语言输入两整数按规则打印范围序列 输出异常如何修复

问题原因

你的代码存在三个核心错误:

  • 没有做分支判断,两个while循环会顺序执行,无论n1和n2的大小关系都会触发两次遍历逻辑,导致输出多余数值
  • 当两个数相等时,第一个while的i <= n2条件永远成立,i不会发生越界,直接进入死循环无限打印
  • 第二个while内部冗余的相等判断逻辑,会重复打印终点数值,进一步导致输出异常
修复后代码
#include <stdio.h>
int main() {
    int i, n1, n2;
    printf("enter 2 integers: ");
    scanf("%d %d", &n1, &n2);

    if (n1 <= n2) {
        // 从小到大遍历
        i = n1;
        while (i <= n2) {
            printf("%d ", i);
            i++;
        }
    } else {
        // 从大到小遍历
        i = n1;
        while (i >= n2) {
            printf("%d ", i);
            i--;
        }
    }
    printf("\n");
    return 0;
}
改动说明
  • 新增大小判断分支,仅执行对应场景的遍历逻辑,避免两个循环同时运行
  • 相等场景被n1 <= n2分支覆盖,只会执行一次遍历打印该数值,不会触发死循环
  • 移除了冗余的重复打印逻辑,输出结果符合预期

内容的提问来源于stack exchange,提问作者PATCHARRAPHUMI PLABPHOL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:09:04