Online Compiler C

// 统计自然数中哪些数字出现多次,按升序输出 #include <stdio.h> int main() { int n;//输入值 n scanf("%d", &n); int count[10] = {0}; //数组count:10个元素,每个元素初始值为0 //数组中元素:输入自然数中可能出现的每个数字(自然数0123456789)的出现的次数 if (n == 0) //特殊:输入值n// 按升序遍历数字0到9 { count[0] = 1;//元素0出现一次 } else { while (n > 0) { int digit = n % 10;// 取出最后一位数字 digit count[digit]++;// 记录 最后一位数字 digit代表的数 出现次数+1 n = n / 10;//去掉已经计数过的最后一位数字,作为为下次循环的初始值 } } for(int i=0;i<10;i++)// 按升序遍历数字0到9 { printf("%d\n", i); } return 0; }
这段代码的目的是统计输入自然数中每个数字(0-9)出现的次数,并按升序输出那些出现多次的数字。但目前代码存在逻辑问题。

代码正确地将输入数字的每一位数字提取出来,并统计了每个数字出现的次数,存储在 `count` 数组中。但最后的输出部分有问题:它只是简单地按顺序打印了数字0到9,而没有检查这些数字是否出现多次。

- 提示1:输出部分应该只打印那些 `count[i]` 大于1的数字,而不是所有数字。
- 提示2:注意 `printf` 语句的位置和条件判断,你需要添加一个条件,只有当某个数字出现次数大于1时才打印它。