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

#include <stdio.h> int main() { int input; scanf("%d",&input); int a[10]={0}; int now; while(input>0) { now=input%10; a[now]++; input/10; } int cnt = 0; while(cnt<=9) { if (a[cnt]>=2) printf("YES"); return 0; a[cnt]++; } printf("NO"); return 0; }
这段代码的目的是判断输入的数字中是否有重复的数字。但代码中存在逻辑错误,导致它无法正确工作。

- 在第一个while循环中,`input/10;`这一行没有将结果赋值回`input`,因此循环会无限执行。你需要将`input`更新为除以10后的结果。
- 第二个while循环中,`return 0;`放在了`if`语句内部,导致只要检查第一个数字就立即结束程序,不会继续检查其他数字。同时`a[cnt]++;`这一行在判断之后又增加了计数,这是多余的。