C语言如何按数组原有顺序输出其中的偶数且不打乱元素顺序?
问题原因
你当前代码的问题有两点:
- 循环变量名和数组名重名,你已经定义了
int nums[100]数组,后续循环又定义了同名的int nums变量,直接覆盖了数组的引用 - 没有遍历数组元素,现有循环逻辑是直接输出2到100之间的所有偶数,和你预先定义的nums数组没有任何关联
修改后的代码
#include<stdio.h> int main(void) { int nums[100] = { 2, 3, 5, 100, 7, 3, 5, 3, 1, 4, 76, 77, 78, 79, 80, 54, 68, 61, 34, 33, 44, 49, 100, 5, 2, 87, 34, 33, 2, 1, 4, 5, 8, 2, 1, 8, 5, 3, 2, 1, 88, 22, 23, 33, 48, 44, 46, 48, 50, 52, 45, 47, 49, 51, 53, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 11, 22, 33, 44, 55, 66, 77, 88, 99, 100, 1000, 2001, 3000, 4001, 5000, 6001, 7000, 8001, 9000, 10001 }; // 按顺序遍历数组全部100个元素,索引从0到99 for(int i=0; i<100; i++) { // 校验当前数组元素是否为偶数 if(nums[i]%2==0){ printf("%d - I love Coding\n", nums[i]); } } return 0; }
逻辑说明
- 循环变量改用
i作为数组索引,从0开始到99结束,完整覆盖nums数组的所有元素 - 判断条件改为对数组当前位置的元素
nums[i]做奇偶校验,符合要求就直接打印,完全保留数组原有元素顺序
内容的提问来源于stack exchange,提问作者Innocent Haru
相关产品推荐
相关产品推荐

