Online Compiler C

#include <stdio.h> int main() { int a; scanf("%d", &a); int n=a%10; while(a!=0) { a=a/10; if(n==a%10)printf("YES"); break; else n=a%10; } return 0; }
这段代码试图检查一个整数的相邻数字是否相等,但逻辑上有问题。它读取一个整数,然后取最后一位数字作为初始值 `n`,接着在循环中不断去掉最后一位并比较新的最后一位与之前的 `n`。

代码的主要问题在于 `break` 的位置和 `if-else` 的结构。`break` 被放在了 `if` 语句块内,导致循环在第一次比较后就无条件退出,而 `else` 部分永远不会执行。另外,如果数字只有一位,循环也会直接结束,但输出逻辑不完整。

- 检查 `break` 的位置:它应该只在找到相邻相等数字时退出循环,而不是每次循环都执行。
- 思考循环的终止条件:当 `a` 变为 0 时循环结束,但此时可能已经处理完所有数字。你需要确保在循环结束后,根据是否找到相等数字来输出结果,而不是在循环内部直接输出。