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"); a/10; } else printf("NO"); return 0; }
这段代码试图判断一个整数中是否有相邻的相同数字,但存在语法和逻辑错误。

- `while` 循环后面直接跟了 `else`,这是语法错误。`else` 只能与 `if` 配对,不能与 `while` 配对。
- 循环内部的逻辑不完整:你只检查了当前最低位和次低位是否相等,但循环继续时 `a` 的值已经改变,导致后续比较可能出错。另外,`a/10;` 这一行没有赋值,是无效语句。
- 如果找到相邻相同数字,程序会输出 "YES",但循环没有停止,可能会多次输出。如果没找到,循环结束后应该输出 "NO",但你的 `else` 位置错误。

提示:
- 思考如何用循环遍历每一位,并比较相邻两位。注意在比较时,需要保留前一位的值,而不是直接比较当前位和变化后的 `a` 的末位。
- 考虑使用一个变量来记录是否找到相邻相同数字,循环结束后根据这个变量决定输出 "YES" 还是 "NO"。