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; }
这段代码的功能是判断一个整数中是否有相邻的相同数字。它从个位开始,依次比较相邻两位数字是否相等。

- 变量 `n` 初始化为个位数字,然后在循环中每次更新为当前最低位,但循环内 `a = a / 10` 先执行,导致比较时 `a % 10` 已经是下一位数字,而 `n` 还是上一位,这样比较的是相邻位,逻辑基本正确。
- 但有一个边界问题:当输入只有一位数时,循环条件 `a != 0` 会进入循环,但此时 `a` 被除以10后变为0,`a % 10` 为0,而 `n` 是原来的个位数字,可能会错误地比较并输出结果。

- 提示:考虑输入为一位数的情况,比如输入 `5`,程序会输出什么?为什么?