在线编译器 C

#include <stdio.h> int main() { int n, save_n; scanf("%d", &n); save_n = n; for (int digit = 0; digit <= 9; digit++) { n = save_n int count_digit = 0; while (n > 0) { int current_digit = n % 10; n /= 10; if (current_digit == digit) { count_digit++; } } if (count_digit > 1) { printf("%d," digit); } } }
这段代码试图统计一个整数中每个数字(0-9)出现的次数,并输出出现次数大于1的数字。但代码存在语法错误和逻辑问题。

- 第8行缺少分号,导致编译错误。C语言中每条语句必须以分号结束。
- 第17行的`printf`格式字符串中,`digit`变量没有正确嵌入,应该使用格式说明符`%d`来输出整数。
- 逻辑上,每次循环开始时将`n`重置为`save_n`是正确的,但注意`while`循环会不断修改`n`,直到`n`变为0,这会导致后续数字的统计无法进行,因为`n`已经被消耗完。你需要思考如何在不破坏原始值的情况下统计每个数字的出现次数。