Online Compiler C

#include <stdio.h> int main() { int a; scanf("%d", &a); while(a!=0) { int n=a%10; a=a/10; if(n==a%10)printf("YES"); else printf("NO"); a/10; } return 0; }
这段代码试图判断一个整数中是否有相邻的相同数字,但逻辑和循环控制存在一些问题。

- 代码在循环中每次比较当前最后一位和新的最后一位,但循环条件 `a!=0` 会导致在数字中间就退出,而且每次比较后都会输出一次结果,这不符合只输出一次的要求。
- 循环末尾的 `a/10;` 语句没有赋值,没有实际作用,而循环体内已经通过 `a=a/10;` 更新了变量,所以这里多余。

- 思考一下:你希望只输出一次“YES”或“NO”,但当前代码在每次比较时都会输出,这会导致多个输出。应该先遍历完所有相邻数字对,再根据是否找到相同数字来决定输出什么。
- 另外,循环条件 `a!=0` 会在数字处理到0时停止,但比如数字 10,处理完最后一位后 a 变成 0,循环结束,但可能漏掉了前面的比较。考虑如何让循环能遍历所有相邻位,比如用另一个变量保存前一位的值。