Online Compiler C

#include <stdio.h> int main() { int a,count[10]=0,i,digit,n; scanf("%d",&n); while (n>0){ digit=n%10; count[digit]++; n=n/10;} for(i=0;i<=9;i++){ if(count[i]>=2) {printf("%d ",i);} else{printf(" ");} } return 0; }
这段代码试图统计一个整数中每个数字出现的次数,并输出出现次数大于等于2的数字。但代码存在几个问题。

- 数组 `count[10]=0` 的初始化语法不正确,在C语言中不能这样一次性初始化整个数组,这会导致未定义行为。
- 当某个数字出现次数小于2时,代码输出了一个空格,这可能会让输出结果看起来很奇怪,而且题目可能要求只输出符合条件的数字,不输出多余空格。
- 如果输入的数字是0,while循环不会执行,程序会直接进入for循环,但此时count数组未正确初始化,结果不可预测。

检查数组初始化的正确方式,以及思考如何只输出符合条件的数字而不输出多余的空格。