Online Compiler C

#include <stdio.h> int main() { int n; scanf("%d", &n); int arr[10]={0}; int flag=0; while (n > 0) { int last = n % 10; if(arr[d]=1){ flag=1 break; } arr[d]=1; n/10; } if (flag == 1) printf("YES"); else printf("NO"); return 0; }
这段代码的目的是判断一个整数中是否有重复的数字。但代码中存在几个关键错误,导致它无法正确运行。

- 第9行 `if(arr[d]=1)` 使用了赋值运算符 `=` 而不是比较运算符 `==`,这会把 `arr[d]` 设为1,并且条件永远为真,导致程序总是输出"YES"。
- 变量 `d` 没有定义,应该使用 `last` 来记录当前数字。
- 第13行 `n/10;` 只是计算了除法但没有把结果存回 `n`,应该写成 `n = n / 10;` 才能更新循环条件。