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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:48:01