在线编译器 C

#include <stdio.h> int main() { int n; scanf("%d", &n); int save_n; for(int digit = 0; digit <= 9; digit++) { save_n=n; while(save_n>0) { int inspect; inspect=save_n%10; int cymma=0; if (digit == inspect) { cymma++; } save_n /= 10; } if (cymma > 1){ printf("%d ", digit); } } return 0; }
这段代码的目的是找出一个整数中重复出现的数字(出现次数大于1的数字)。它遍历0到9每个数字,然后检查原数中该数字出现的次数。

代码中存在一个关键问题:变量 `cymma` 每次循环都被重置为0,但它的声明位置在 `while` 循环内部,导致每次检查一个数字位时都会重新初始化为0,无法累计整个数字中该数字出现的总次数。

- 将 `cymma` 的声明和初始化移到 `while` 循环之前,这样它才能在检查所有数位的过程中累加计数。
- 注意变量命名 `cymma` 可能是想表达“和”或“计数”,但拼写有误,建议使用有意义的英文名如 `count`。