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

#include <stdio.h> int main() { int n; scanf("%d",&n); while(n>0){ int last=n%10; int last_sec=(n/10)%10; if(last==last_sec){ printf("YES"); }else{ printf("NO"); } n=n/10; } return 0; }
这段代码的功能是:读取一个整数,然后依次检查该数字的每一位与它前一位(右侧相邻位)是否相等,每次比较后立即输出"YES"或"NO"。

代码存在两个主要问题:

- 循环逻辑有误。每次比较后立即输出结果,但题目通常要求只输出一次最终结果。而且循环会一直执行到n变成0,导致多次输出。

- 边界情况处理不当。当n只有一位数时,`last_sec`的计算会得到0,可能导致错误的比较结果。另外,循环结束后n变为0,但原始数字的信息已经丢失。