Online Compiler C

#include <stdio.h> int main() { int n,; scanf("%d", &n); int flag=0 while (n >= 0){ int last=n%10; int pre=(n/10)%10 if last==pre { flag=1; } n/=10 } if flag==1 printf("YES"); else printf("NO") return 0; }
这段代码试图判断一个整数中是否有相邻的相同数字,但存在多个语法错误和逻辑问题。

- 第4行 `int n,;` 中多了一个逗号,这是语法错误。
- 第6行 `int flag=0` 末尾缺少分号。
- 第8行 `int pre=(n/10)%10` 末尾缺少分号。
- 第9行 `if last==pre` 缺少括号,正确写法是 `if (last == pre)`。
- 第14行 `n/=10` 末尾缺少分号。
- 第15行 `if flag==1` 缺少括号。
- 第18行 `printf("NO")` 末尾缺少分号。

另外,逻辑上也有问题:当 `n` 为负数时循环不会执行,但 `n` 可能为0或正数。循环条件 `while (n >= 0)` 会导致当 `n` 变为0后继续循环,因为 `n` 会一直为0,陷入死循环。你应该考虑循环何时结束,以及如何处理个位数的情况。