在线编译器 C

#include <stdio.h> int main() { int x, x0, digit = 0, counter = 0; scanf("%d", &x); x0 = x; while (digit <= 9) { x = x0; int current_digit; while (x >= 1) { current_digit = x % 10; x = x / 10; if (digit == current_digit) { counter++; } if (counter >= 2) { printf("YES"); } return 0; } digit++ } printf("NO"); return 0; }
这段代码试图判断一个整数中是否有某个数字出现至少两次。但代码存在逻辑错误,导致它无法正确工作。

- 外层循环的 `digit++` 后面缺少分号,这是一个语法错误。
- `return 0;` 被错误地放在了内层循环内部,导致程序在第一次检查后就立即结束,不会继续判断其他数字。
- 内层循环中,`counter` 没有在每次检查新数字时重置,导致计数会累积到错误的数字上。
- 当找到重复数字时,应该只输出 "YES" 并结束程序,但当前代码在每次发现匹配时都会输出,且没有正确处理结束条件。