Online Compiler C

#include <stdio.h> int main() { int a; scanf("%d", &a); int used[10] = {0}; int ok = 0; while (a > 0) { int d = a % 10; if (used[d] == 1) { ok = 1; break; } used[d] = 1; n = n / 10; if (ok == 1) printf("YES"); else printf("NO"); return 0; }
这段代码试图判断一个整数中是否有重复的数字,但存在几个问题。

代码中使用了未定义的变量 `n`,应该是想用 `a` 来更新循环。另外,输出语句放在了循环内部,导致每次循环都可能输出结果,而且 `return 0` 也在循环内,导致程序在第一次循环后就结束。

- 检查变量名:你在循环中使用了 `n = n / 10`,但变量 `n` 没有被定义。应该是想用 `a` 来不断除以10,所以需要把 `a` 更新为 `a / 10`。
- 输出位置:`printf` 和 `return 0` 被放在了 `while` 循环内部,这会导致程序在第一次循环时就输出结果并结束。应该把输出和返回语句移到循环结束后,根据 `ok` 的值统一输出。