Онлайн компилятор C

#include <stdio.h> int main() { int n; scanf("%d", &n); int arr[10]={0}; int flag=0; while (n > 0) { int d = n % 10; if(arr[d]==1){ flag=1 break; } arr[d]=1; n/10; } if (flag == 1) printf("YES"); else printf("NO"); return 0; }
这段代码试图判断一个整数中是否有重复的数字。它使用一个数组记录每个数字是否出现过,如果遇到已经出现过的数字就设置标志并退出循环。

代码中存在一个关键错误:在循环中 `n/10;` 这一行只是计算了 n/10 但没有把结果赋值回 n,导致循环无法正确更新 n 的值,从而可能陷入无限循环或无法正确遍历所有数字。

- 检查 `n/10;` 这一行,思考如何让 n 的值在每次循环中更新为去掉最后一位后的结果。
- 另外,注意 `flag=1` 后面缺少分号,这是一个语法错误。