Онлайн компилятор C

#include <stdio.h> int main() { int x, a = 0, b = 0; scanf("%d", &x); while (x >= 10) { a = x % 10; b = (x % 100 - x % 10) / 10; if (a == b) { printf("YES"); } return 0; x = x / 10; } printf("NO"); } return 0; }
这段代码试图判断一个整数中是否存在相邻的相同数字,但逻辑有误。

- 代码在 `while` 循环中,第一次进入循环就会执行 `return 0;`,导致循环只执行一次就结束,后面的 `x = x / 10` 永远不会执行。
- 循环条件 `x >= 10` 只检查数字是否还有两位以上,但循环体内部没有正确更新 `x` 来遍历所有相邻数字对。

- 提示1:`return 0;` 的位置不对,它导致程序在第一次比较后就立即退出,应该只在找到结果后使用,或者放在循环结束后。
- 提示2:检查完一对相邻数字后,需要去掉最后一位数字(即 `x = x / 10`),但这条语句被放在了 `return` 之后,永远不会执行。思考如何调整顺序,让循环能依次检查每一对相邻数字。