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

如何在C语言中先存偶数再存奇数到同一数组?求指导

解决1到N数字按先偶数后奇数存入数组的问题

原代码存在的问题:

  • 循环范围错误:原代码遍历0到n-1,但题目要求处理1到N的数字,既漏掉了N,还包含了不需要的0。
  • 数组越界:array[n] = i 访问了数组的非法下标,数组下标范围是0到n-1,越界会导致程序行为异常。
  • 未处理奇数逻辑:原代码仅尝试存入偶数,完全没有处理奇数的部分,无法得到目标数组。
  • 索引逻辑错误:没有用独立变量跟踪数组的存储位置,直接用循环变量对应数组下标是错误的。

修正后的代码:

#include <stdio.h>

int main()
{
    int n;
    scanf("%d", &n);
    int array[n];
    int idx = 0; // 跟踪数组当前的存储位置

    // 先存入1到n的所有偶数
    for (int i = 1; i <= n; i++)
    {
        if (i % 2 == 0)
        {
            array[idx++] = i;
        }
    }

    // 再存入1到n的所有奇数
    for (int i = 1; i <= n; i++)
    {
        if (i % 2 != 0)
        {
            array[idx++] = i;
        }
    }

    // 输出数组内容
    for (int i = 0; i < n; i++)
    {
        printf("%d ", array[i]);
    }
    printf("\n");

    return 0;
}

代码说明:

  • 新增idx变量控制数组存储位置,每存入一个元素就自增,确保下标合法且顺序正确。
  • 分两次循环:先遍历1到n的偶数存入数组,再遍历奇数存入,保证先偶后奇的顺序。
  • 循环范围调整为1到n,覆盖题目要求的所有数字。

内容的提问来源于stack exchange,提问作者Sabbir Ahmed Shawon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:00:16