在线编译器 C

#include <stdio.h> int main() { int n, m, i = 0, a; scanf("%d", &n); while (i < 10) { while (n != 0) { a = n % 10; if (a == i) m++; n = n / 10; } if (m >= 2) printf("%d ", i); i++; } return 0; }
这段代码试图统计一个整数中每个数字(0-9)出现的次数,并输出出现次数大于等于2次的数字。但代码存在逻辑错误,导致无法正确运行。

- 变量 `m` 没有初始化,每次循环时 `m` 的初始值不确定,会导致计数错误。
- 内层 `while` 循环会不断将 `n` 除以10直到变为0,但 `n` 的值被修改后无法恢复,导致后续数字无法被正确检查。你需要在外层循环中保存 `n` 的原始值,或者每次重新获取输入。