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

