Онлайн компилятор C

#include <stdio.h> int main() { int n; scanf("%d", &n); int save_n=n; int digit=0; while (digit<=9) { n=save_n; int counter=0; while(n>0) { int current_digit=n%10; if(digit==curent_digit){ counter++ } n=n/10; } if (counter>=2){ printf("YES\n"); else printf("NO\n") return 0; } n = n / 10; } printf("NO\n"); return 0; }
这段代码的目的是判断一个整数中是否存在某个数字(0-9)出现了至少两次。但代码中有几处语法错误和逻辑问题。

- 第13行 `if(digit==curent_digit){` 中 `curent_digit` 拼写错误,应该是 `current_digit`。
- 第14行 `counter++` 缺少分号。
- 第17行 `if (counter>=2){` 缺少左花括号,且第18行 `printf("YES\n");` 后缺少右花括号和分号。
- 第19行 `else` 对应的 `printf("NO\n")` 缺少分号。
- 第23行 `n = n / 10;` 在循环末尾多余,且会导致 `n` 被错误修改。
- 外层 `while (digit<=9)` 循环中,每次循环开始虽然重置了 `n=save_n`,但 `digit` 从未递增,会导致无限循环。

- 提示1:检查所有变量名是否一致,特别是 `curent_digit` 和 `current_digit`,并确保每条语句末尾都有分号。
- 提示2:思考外层循环中 `digit` 的值如何变化才能遍历0到9,以及内层循环结束后是否需要额外修改 `n`。