Online Compiler C

#include <stdio.h> int main() { int a; scanf("%d", &a); int n = a % 10, i = a; while (i != 0) { a = a / 100; if (n == a % 10) { printf("YES"); return 0; } else i = i / 10, a = i, n = i % 10; } printf("NO"); return 0; }
这段代码试图判断一个整数中是否存在两个相同数字相隔一位(即中间隔一个数字)的情况。但代码逻辑有误,导致结果不正确。

- 变量 `n` 被初始化为 `a` 的个位数,但循环中 `a` 的值被反复修改,导致后续比较时 `a` 已经不是原始数字,比较失去了意义。
- 循环内对 `a` 和 `i` 的赋值操作混乱,特别是 `a = i` 这一行,使得 `a` 被重置为 `i` 的当前值,破坏了原本要逐位检查的逻辑。