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

C语言如何移除数组输出多余0及代码块发布技巧求助

问题解答

1. 数组输出无效0的问题解决

问题原因

你当前代码的核心问题是v2、v3数组的下标和原数组v的下标完全绑定:只有原数组对应下标的元素符合条件时,v2/v3对应位置才会被赋值为有效数字,不符合条件的位置会保留初始化的0值,最终输出时遍历全部N个元素,就会出现多余的无效0。
另外你判断3的倍数的条件(v[i] >= 0 || v[i] <= 0) && v[i] % 3 == 0存在冗余,前者是恒成立的条件,可以直接删除。

修复方案

  • 新增两个计数变量count2、count3,初始值为0,分别记录v2、v3中有效元素的数量
  • 元素符合存入条件时,将值存入v2[count2]/v3[count3],对应计数变量自增1
  • 输出时仅遍历到对应计数变量的长度,不需要遍历全部N个元素

修复后完整代码

#include <stdio.h>
#include <stdlib.h>
#define N 5
int main()
{
    int v[N];
    int v2[N] = {0, };
    int v3[N] = {0, };
    int i, count2 = 0, count3 = 0;
    printf("Please enter the elements of the 1st array: ");
    for (i = 0; i < N; i++)
    {
        scanf("%d", &v[i]);
    }
    // 处理第二个数组
    for (i = 0; i < N; i++)
    {
        if (v[i] % 3 == 0)
        {
            v2[count2] = v[i];
            count2++;
        }
    }
    printf("\nThe elements of the 2nd array are: ");
    for (i = 0; i < count2; i++)
    {
        printf("%d ", v2[i]);
    }
    // 处理第三个数组
    for (i = 0; i < N; i++)
    {
        if (v[i] < 0 && v[i] % 2 != 0 && v[i] % 3 != 0)
        {
            v3[count3] = v[i];
            count3++;
        }
    }
    printf("\nThe value of the 3rd array are : ");
    for (i = 0; i < count3; i++)
    {
        printf("%d ", v3[i]);
    }
    return 0;
}

2. 代码发布格式问题

不需要手动给每行加4个空格,直接使用Markdown围栏代码块格式即可:

  • 把从Code::Blocks复制的代码前后各加一行```(英文反引号,键盘左上角ESC下方按键)
  • 开头的```后面可以加代码对应的语言标识,比如c,平台会自动识别为代码块并做语法高亮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:57:01