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

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

首先,数组 `a` 没有初始化,它的元素初始值是不确定的,这会导致 `a[now]++` 的结果不可预测。其次,循环中的 `input/10;` 这一行没有将结果赋值回 `input`,所以循环会无限执行。最后,`if(a[now]>=2)` 中的 `now` 是循环结束后的值,而不是检查所有数字。

- 在使用数组统计数字出现次数前,需要先将数组所有元素初始化为0。
- 循环中 `input/10;` 应该写成 `input = input / 10;` 才能更新 `input` 的值。