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; }
这段代码试图判断一个整数中是否有相邻的相同数字。它从个位开始,每次取最后一位与下一位比较,如果发现相邻相等就输出YES,否则输出NO。

- 代码中 `printf("YES")` 后面缺少分号,会导致编译错误,需要检查语法。
- 逻辑上,当 `a` 变成0时,`a % 10` 会得到0,这可能导致误判。例如输入10时,个位是0,下一次循环 `a` 变成1,`a % 10` 是1,不相等,但再下一次 `a` 变成0,`a % 10` 是0,此时 `n` 是1,比较1和0不相等,但循环继续,当 `a` 为0时,`a % 10` 还是0,而 `n` 可能已经是0,就会错误地输出YES。需要思考循环何时应该停止。