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") return 0; else n = a / 10; } printf("NO"); return 0; }
这段代码试图判断一个整数中是否有相邻的两位数字相同,但存在逻辑错误。

- 在 `while` 循环中,`if` 语句后面直接跟了 `return 0;`,这会导致循环在第一次判断后就立即结束,无法检查后续的数字。
- 变量 `n` 的更新方式有误,`else n = a / 10;` 并不是取当前数字的最后一位,而是取了除以10后的整数部分,这不符合预期。

提示:
- 检查 `if` 语句后面的 `return 0;` 是否应该放在循环内部,思考它会导致什么效果。
- 思考如何正确更新 `n` 的值,使其始终保存当前正在比较的那一位数字。