Online Compiler C

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

- 代码中 `printf("NO")` 缺少分号,会导致编译错误。
- `if` 语句后面没有使用花括号,导致 `return 0;` 总是会执行,无论条件是否成立。这意味着只要进入循环,程序就会立即输出 "YES" 并结束,不会检查后续数字。
- 循环逻辑也有问题:每次循环先更新 `a`,再比较 `n` 和新的 `a % 10`,但 `n` 是原始最后一位数字,这样比较的是相隔一位的数字,而不是相邻位。