Online Compiler C

#include<stdio.h> int main(){ int n,last,t; scanf("%d",&n); while(n>=10){ last=n%10; n=n/10; t=n; while(t>0){ if (last==t%10){ printf("YES")} return 0;} t=t/10; } } printf("NO"); return 0; }
这段代码试图判断一个整数中是否有重复的数字。它从个位开始,每次取最后一位数字,然后与剩余部分的每一位进行比较。但代码存在逻辑和语法问题。

- 代码中 `printf("YES")` 后面缺少分号,会导致编译错误。
- 内层 `while` 循环中,一旦发现重复就输出 "YES" 并立即 `return 0`,但此时可能还没有检查完所有数字。而且内层循环的 `t=t/10` 放在了 `return 0` 之后,永远不会执行,导致内层循环变成死循环(如果没找到重复)。
- 外层循环的逻辑也不完整:每次只检查当前最后一位与剩余部分是否有重复,但剩余部分本身也可能有重复,而代码没有继续检查剩余部分内部的重复。