Online Compiler C

#include <stdio.h> int main() { int a; scanf("%d", &a); int n = a % 10; while (a != 0) { a = a / 10; while (a != 0) { if (n == a % 10) { printf("YES"); return0; } else a = a / 10; } n = a % 10; } printf("NO"); return 0; }
这段代码试图判断一个整数中是否有重复的数字。但逻辑上有问题,导致可能无法正确判断或陷入死循环。

- 外层循环每次更新 `n` 时,`a` 可能已经被内层循环改变,导致外层循环的 `n` 取值错误。
- 内层循环在比较后继续除以10,但外层循环也会再次除以10,导致数字被过度缩减,可能漏掉比较或提前结束。

提示:
- 思考如何在不破坏原始数字的情况下,分别取出每一位进行比较。可以尝试用两个循环,一个固定当前位,另一个遍历剩余位。
- 注意循环条件:当 `a` 变为0时,内层循环和外层循环的结束条件需要仔细设计,避免提前退出或无限循环。