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

C语言实现用户输入数字分奇偶数组输出 代码运行异常求助

问题修复方案

原代码核心错误点

  • 变长数组定义顺序错误:你在变量a未被赋值的前提下就用a定义了变长数组b[a],此时a是内存中的随机垃圾值,数组大小完全不符合预期,直接导致后续输入写入非法内存,程序行为异常。
  • 第二个遍历循环逻辑完全错误:循环条件写为i <= a且步长为i--,会导致i无限减小触发死循环,同时会出现数组下标为负的越界访问,直接触发内存错误。
  • 输出逻辑结构错误:你把分类标题写在了循环内部,会导致每遍历一个元素就重复打印一次分类标题,完全不符合输出预期。
  • 数字输出无分隔符:打印数值时没有空格、换行等分隔符,多个数字会连在一起无法区分。

修复后可正常运行的代码

#include <stdio.h>
int main()
{
    int a, i;
    // 先读取数组长度,再定义变长数组
    printf("Enter a range to print the odd and even numbers-->\n"); 
    scanf("%d", &a);
    int b[a];
    // 读取用户输入的a个数字
    for (i = 0; i < a; i++)
    {
        scanf("%d", &b[i]);
    }
    // 统一输出所有偶数
    printf("The Even numbers are -->\n");
    for (i = 0; i < a; i++)
    {
        if (b[i] % 2 == 0)
        {
            printf("%d ", b[i]);
        }
    }
    printf("\n");
    // 统一输出所有奇数
    printf("The Odd numbers are -->\n");
    for (i = 0; i < a; i++)
    {
        if (b[i] % 2 != 0)
        {
            printf("%d ", b[i]);
        }
    }
    printf("\n");
    return 0;
}

编译运行说明

  • 该代码兼容C99及以上标准,你使用的gcc可以直接通过gcc 源文件名.c -o 程序名.exe命令编译,直接生成的exe文件即可正常运行
  • 如果需要兼容更旧的C标准,可以将变长数组替换为malloc动态内存申请的方式实现相同功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:07