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;
这段代码试图判断一个整数中是否有某个数字出现了至少两次。但代码中存在语法错误和逻辑问题。

- 第9行到第18行的每个if语句后面缺少了左括号和右括号,导致条件判断和自增操作无法正确执行。例如 `if(y==0 n0++)` 应该是 `if(y==0) n0++;`。
- 循环结束后,判断是否有数字出现两次的逻辑放在了循环内部,这会导致每次取一位数字后都立即检查,而不是在所有数字统计完成后才检查。应该把判断移到循环外面。

- 检查一下每个if语句的括号是否完整,以及自增操作是否在正确的代码块内。
- 思考一下应该在什么时候判断是否有数字重复出现:是在统计完所有数字之后,还是在每次取一位数字时?