Online Compiler C

#include <stdio.h> int main() { int a; scanf("%d", &a); int n = a % 10,i=a; while (a != 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/100`)来比较,但循环内又修改了 `i` 和 `n`,导致比较的基准不断变化,逻辑混乱。
- 循环条件 `a != 0` 和内部的 `a=a/100` 配合,会跳过太多数字,可能漏掉或错误判断相邻数字。

提示:
- 思考如何逐位检查数字,而不是跳过两位。可以用数组存储每一位,或者用两个变量分别跟踪当前位和前一位。
- 注意循环中 `i` 和 `n` 的更新方式,它们与 `a` 的关系不清晰,容易导致无限循环或错误结果。