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
相关产品推荐
相关产品推荐

