Online Compiler C

#include <stdio.h> int main() { int n,n0=0,n1=0,n2=0,n3=0,n4=0,n5=0,n6=0,n7=0,n8=0,n9=0,y; scanf("%d",&n); while(n!=0){y=n%10; n=n/10; if(y==0) n0++; if(y==1) n1++; if(y==2) n2++; if(y==3) n3++; if(y==4) n4++; if(y==5) n5++; if(y==6) n6++; if(y==7) n7++; if(y==8) n8++; if(y==9) n9++; if(n0==2||n1==2||n2==2||n3==2||n4==2||n5==2||n6==2||n7==2||n8==2||n9==2) printf("YES"); else{printf("NO"); }} return 0;
这段代码的功能是:读入一个整数,然后判断这个整数中是否存在某个数字出现了至少两次。如果存在,输出"YES",否则输出"NO"。但代码的逻辑有一些问题。

- 你的代码在每次循环中都会检查是否有数字出现两次,并且每次都会输出结果。这会导致程序在检查到第一个数字时就可能输出结果,而不是等所有数字都统计完后再判断。
- 另外,如果某个数字出现两次,你会在循环中多次输出"YES",这也不符合预期。

提示:
- 你应该先完成所有数字的统计,循环结束后再根据统计结果输出一次"YES"或"NO"。
- 注意循环条件:当n变成0时循环结束,但此时最后一个数字已经处理完毕,所以循环结束后再判断是合适的。