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

C语言区间数字输出程序出现空输出异常求助

问题分析与修复方案

核心错误点

  1. scanf格式字符串错误:scanf("%d\n%d", &a, &b); 中的\n会导致程序读取第二个整数时,需额外输入换行/空白字符才能完成输入,可能引发输入异常。
  2. 循环变量计算偏移:循环中用a+(i-1)表示当前数字,当i=0时会得到a-1,超出目标区间[a,b]范围,导致逻辑混乱。
  3. 数组索引越界:nums数组索引为0-8,对应数字1-9,直接用(a+(i-1))作索引会让数字1对应nums[1](应为nums[0]),数字9对应nums[9](数组越界,访问非法内存)。

修复后的代码

#include <stdio.h>

int main() 
{
    int a, b;
    scanf("%d%d", &a, &b); // 移除多余的\n
    char *nums[9] = {"one","two","three","four","five","six","seven","eight","nine"};

    for(int i = 0; (a + i) <= b; i++){
        int current_num = a + i; // 直接计算当前遍历的区间数字
        if(current_num >= 1 && current_num <=9)
            printf("%s\n", nums[current_num - 1]); // 数字减1匹配数组正确索引
        else if (current_num % 2 == 1) {
            printf("odd\n");
        } else {
            printf("even\n");
        }
    }
    return 0;
}

修复说明

  • 移除scanf中的\n,保证两个整数的输入逻辑正常。
  • 用current_num = a + i直接表示区间内的当前数字,避免i-1导致的偏移错误。
  • 数组索引改为current_num -1,让数字1对应nums[0]、数字9对应nums[8],彻底解决索引越界问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:17:14