C语言如何打印未知长度的int数组并输出偶数位置输入元素
C语言处理未知长度输入、输出偶数位置元素方案
首先明确前提:你已经知道输入上限为1000个整数,完全可以用固定大小数组实现,无需处理动态内存分配。
核心说明
此处的「偶数位置」默认有两种计数规则,可根据你的需求调整:
- 从1开始计数时,偶数位置对应第2、4、6...个输入,对应数组下标为1、3、5...
- 从0开始计数时,偶数位置对应第1、3、5...个输入,对应数组下标为0、2、4...
方案1:先存储全部输入,再筛选输出
不需要动态定义数组长度,直接开最大容量的固定数组即可,1000个int仅占用约4KB内存,无性能负担。
#include <stdio.h> #define MAX_INPUT 1000 int main() { int arr[MAX_INPUT]; int count = 0; // 读取输入,直到输入结束或者达到上限 while (count < MAX_INPUT && scanf("%d", &arr[count]) == 1) { count++; } // 输出偶数位置元素,这里示例为从0开始计数的偶数下标 for (int i = 0; i < count; i += 2) { printf("%d ", arr[i]); } // 如果是从1开始计数的偶数位置,把上面的循环改成i从1开始即可: // for (int i = 1; i < count; i += 2) { // printf("%d ", arr[i]); // } return 0; }
方案2:边输入边输出,无需额外存储全部元素
如果不需要后续使用输入的所有元素,完全可以在输入时直接判断位置,符合要求就直接打印,连数组都不需要:
#include <stdio.h> #define MAX_INPUT 1000 int main() { int num; int pos = 0; while (pos < MAX_INPUT && scanf("%d", &num) == 1) { // 示例为从0开始计数的偶数位置,要改规则调整判断条件即可 if (pos % 2 == 0) { printf("%d ", num); } pos++; } return 0; }
如果你一定要单独存储偶数位置的元素
直接开最大容量为500的数组即可(1000个输入最多有500个偶数位置元素),用单独的变量记录存储的有效元素数量:
int even_arr[500]; int even_count = 0; // 输入时判断符合条件就存入 if (pos % 2 == 0) { even_arr[even_count++] = num; } // 后续打印直接遍历even_count个元素即可
内容的提问来源于stack exchange,提问作者ferocioussprouts
相关产品推荐
相关产品推荐

