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; }
这段代码的功能是:读入一个整数,然后检查这个整数中是否存在相邻的两位数字相同。如果存在,输出"YES";否则程序结束(不输出任何内容)。

代码的逻辑是:先取个位数字存入`n`,然后循环去掉最后一位,比较新的个位与之前保存的`n`是否相等。

- 你的循环条件`while (a != 0)`会导致当数字处理完所有位后退出,但如果数字本身是0,循环不会执行,程序直接结束。考虑一下输入为0时应该如何处理。
- 另外,当数字只有一位时(比如输入5),循环只执行一次,但比较逻辑可能不够清晰。建议思考一下:在循环中,你是在比较当前位和上一位,但第一次比较时`n`保存的是个位,而`a`已经去掉了最后一位,这样比较的是哪两位?