Онлайн компилятор 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"); } printf("NO"); return 0; }
这段代码的功能是判断一个整数中是否有重复出现的数字。它读取一个整数N,然后统计每个数字(0-9)出现的次数,最后检查是否有数字出现次数大于等于2。

代码中存在一个逻辑错误:在第二个while循环中,变量lot没有递增,导致循环无法正常遍历所有数字。同时,如果找到重复数字就输出"YES",但循环结束后还会输出"NO",这会导致输出结果不正确。

- 检查第二个while循环,确保lot的值在每次循环后递增,否则循环会无限执行或无法正确遍历。
- 考虑当找到重复数字时,应该立即结束程序或避免输出后面的"NO",否则无论是否找到重复数字,都会输出"NO"。