Online Compiler 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; }
这段代码的目的是判断一个整数中是否有某个数字出现至少两次。但代码存在多个语法和逻辑错误。

- 第12行 `curent_digit` 拼写错误,应该是 `current_digit`。
- 第13行 `counter++` 缺少分号。
- 第17行 `if (counter >= 2)` 后面的大括号位置不对,导致 `else` 无法正确匹配。
- 第18行 `printf("YES\n");` 后面直接跟了 `else`,但缺少大括号来分隔两个分支。
- 第20行 `return 0;` 放在了循环内部,导致循环只执行一次就结束程序。
- 外层 `while (digit <= 9)` 循环没有更新 `digit` 的值,会无限循环。

- 检查所有变量名是否拼写一致,特别是 `current_digit`。
- 注意 `if-else` 语句的语法结构,确保每个分支都用大括号包裹。
- 思考 `return 0;` 应该放在哪里,才能让程序完整检查所有数字后再结束。