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
相关产品推荐
相关产品推荐

