在线编译器 C

#include <stdio.h> int main() { int n; scanf("%d",&n); int last=n%10; int last_sec=(n%10)%10; while(n>0){ if(last==last_sec){ printf("YES"); } n=n/10; } printf("NO"); return 0; }
这段代码试图判断一个整数中是否有相邻的相同数字,但逻辑有误。它只检查了最后两位数字,并且循环没有正确比较相邻数字。

- 变量 `last_sec` 的计算方式错误。`(n%10)%10` 实际上还是得到个位数,而不是倒数第二位。你需要先去掉个位,再取新的个位才能得到倒数第二位。
- 循环中每次只比较固定的 `last` 和 `last_sec`,没有更新这两个变量来检查其他相邻位置。应该在循环内部更新这两个变量,让它们分别代表当前位和上一位。