#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` 后面缺少分号,这是一个语法错误。