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

C语言中如何简化数组元素(除最后一个)添加逗号的打印逻辑?

优化方案:标志位控制逗号输出

你当前的实现需要先遍历数组统计奇偶数量,确实多了一次不必要的遍历。更简洁的方式是用标志位判断是否为当前类别第一个元素,直接在打印时控制逗号,无需提前统计:

#include <stdio.h>
int main(void)
{
    int size;
    printf("Enter the size of the array: ");
    scanf("%d", &size);
    int array[size];
    
    // 输入数组元素
    for(int i = 0 ; i < size; i++)
    {
        printf("Enter element #%d: ", i+1);
        scanf("%d", array + i);
    }

    // 打印偶数列表
    printf("even: ");
    int is_first_even = 1; // 标记是否是第一个偶数
    for(int i = 0 ; i < size; i++)
    {
        if(array[i] % 2 == 0)
        {
            if(!is_first_even)
            {
                printf(", "); // 非第一个元素,先打印逗号
            }
            printf("%d", array[i]);
            is_first_even = 0; // 打印过第一个元素后,标志位设为0
        }
    }
    printf("\n");

    // 打印奇数列表
    printf("odd: ");
    int is_first_odd = 1; // 标记是否是第一个奇数
    for(int i = 0 ; i < size; i++)
    {
        if(array[i] % 2 != 0)
        {
            if(!is_first_odd)
            {
                printf(", ");
            }
            printf("%d", array[i]);
            is_first_odd = 0;
        }
    }

    return 0;
}

关键逻辑说明

  • 用is_first_even和is_first_odd两个变量分别标记当前是否是偶数/奇数列表的第一个元素,初始值为1(真)。
  • 当遇到第一个偶数/奇数时,直接打印数字,然后将标志位设为0(假)。
  • 后续再遇到同类别元素时,先打印逗号再打印数字,确保只有元素之间才会出现逗号,最后一个元素后无多余逗号。
  • 省去了单独统计奇偶数量的遍历步骤,代码更简洁,效率也更高。

内容的提问来源于stack exchange,提问作者drkcutie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:08:17