在线编译器 C

#include <stdio.h> int main() { int n,q=9,p; scanf ("%d" ,&n); while (n !=0){ p=n%10; if (p == q){ printf("YES"); return 0; } n=n/10 } printf("NO") return 0; }
这段代码的功能是:读入一个整数,然后检查这个整数的十进制表示中是否包含连续相同的相邻数字(比如11、22、33等)。如果找到这样的相邻相同数字对,就输出"YES",否则输出"NO"。

代码中有两个语法错误需要修正:

- 第12行 `n=n/10` 末尾缺少分号。
- 第14行 `printf("NO")` 末尾缺少分号。

另外,逻辑上有一个问题:变量 `q` 初始化为9,但每次循环中 `p` 取的是当前最低位数字,而 `q` 从未更新。这意味着程序只会检查最低位数字是否等于9,而不是检查相邻两位是否相等。你需要思考如何让 `q` 记录前一位数字,以便与当前位比较。