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

C语言程序多FOR循环连续执行时提前终止,无法完成数组奇偶分离

问题分析与修复方案

你的程序出现提前退出的核心原因是使用了非标准的void main作为入口函数,部分编译器会因此导致程序执行异常中断。另外,当前奇偶数组的存储逻辑也存在错误,会导致数组中存在大量未初始化的元素,不符合需求。

修复步骤:

  • 将入口函数改为标准的int main(),并在函数末尾添加return 0;,确保程序正常退出。
  • 为奇偶数组设置独立的计数器,分别统计并存储奇数和偶数,避免数组空位问题。

修正后的完整代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
    srand(time(NULL));

    int vector[20];
    int vectoreven[20];
    int vectorodd[20];
    int c = 0;
    int even_cnt = 0, odd_cnt = 0;

    // 生成20个随机数存入vector数组
    for(c = 0; c < 20; c++){
        vector[c] = rand() % 100;
    }

    // 输出原数组内容
    for(c = 0; c < 20; c++){
        printf("\nVector %d = %d", c, vector[c]);
    }

    // 分离奇偶并存储到对应数组
    for(int d = 0; d < 20; d++){
        if(vector[d] % 2 == 0){
            vectoreven[even_cnt] = vector[d];
            printf("\nVector even %d = {%d}", even_cnt, vectoreven[even_cnt]);
            even_cnt++;
        } else {
            vectorodd[odd_cnt] = vector[d];
            printf("\nVector odd %d = I%dI", odd_cnt, vectorodd[odd_cnt]);
            odd_cnt++;
        }
    }

    return 0;
}

额外说明:

  • 把c <= 19改为c < 20,写法更符合C语言数组遍历的习惯,逻辑完全一致。
  • 奇偶数组使用独立计数器后,存储的元素是连续的,不会出现空位,也能清晰知道各自的元素数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:50:22