Online Compiler C

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

- 变量 `digit` 没有声明和初始化,无法在循环中使用。
- 内层 `while` 循环的写法有语法错误,花括号缺失导致 `int current_digit` 声明后无法正确执行后续语句。
- `counter` 的作用域只在 `while (digit <= 9)` 循环内部,但最后判断时却在外层使用,导致编译错误或逻辑错误。
- 外层循环缺少对 `digit` 的递增操作,会陷入死循环。