在线编译器 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"); lot++; } printf("NO"); return 0; }
这段代码试图判断一个整数中是否有重复出现的数字。它统计了每个数字(0-9)出现的次数,然后检查是否有数字出现次数大于等于2。

代码的主要问题是输出逻辑有误。当发现重复数字时,程序会输出"YES",但之后循环继续执行,并且最终总会输出一次"NO"。

- 在检测到重复数字后,应该立即结束程序,而不是继续循环并最终输出"NO"。
- 可以考虑使用一个标志变量来记录是否找到重复数字,循环结束后根据标志变量的值输出一次结果。