Online Compiler 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; inspcet=save_n%10; int cymma=0; if (digit == inspect) { cymma++; } save_n /= 10; } if (cymma > 1){ printf("%d ", digit); } } return 0; }
这段代码的目的是找出一个整数中重复出现的数字(即出现次数大于1的数字)。但代码中存在一些错误,导致它无法正确运行。

- 变量 `inspect` 被声明但未初始化,随后又拼写为 `inspcet` 赋值,这会导致编译错误或未定义行为。
- 变量 `cymma` 每次循环都被重置为0,但它的作用应该是统计每个数字出现的次数,然而它被错误地放在 `while` 循环内部,导致每次检查一个数字位时都重置计数,无法正确累加。

- 检查 `digit` 是否等于 `inspect` 的逻辑是正确的,但 `cymma` 的累加位置不对,应该在外层循环中初始化,并在内层循环中累加。