Online Compiler C

#include <stdio.h> int main() { int N,num; scanf("%d",&N); int a[10]={0}; while(N>0) { num=N%10; a[num]++; N=N/10; } int lot=0; while(lot<10) { if(a[lot]>=2) printf("YES"); return 0; } printf("NO"); return 0; }
这段代码的目的是判断一个整数中是否有重复出现的数字。它通过统计每个数字(0-9)出现的次数,然后检查是否有数字出现两次或以上。

代码的主要问题在于循环结构。在第一个while循环之后,第二个while循环中,`if(a[lot]>=2)` 后面直接跟了 `return 0;`,这会导致循环只执行一次就结束,无法正确检查所有数字。

- 第二个while循环缺少大括号,导致 `return 0;` 不在循环体内,循环只执行一次就退出。
- 如果第一个数字出现次数大于等于2,会输出"YES"并结束程序;否则直接输出"NO",不会检查后续数字。