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; }
这段代码的目的是判断一个整数中是否有连续两位数字相同。它从个位开始,依次比较相邻两位数字是否相等。

代码中存在一个逻辑错误:在 `if` 语句中,`printf("YES"); return 0;` 这一行缺少大括号,导致 `return 0;` 不在 `if` 的条件分支内,而是无条件执行。这意味着只要循环执行一次,无论是否找到相同数字,程序都会立即输出 "YES" 并结束。

- 检查 `if` 语句后面的大括号使用,确保 `return 0;` 只在条件成立时执行。
- 注意循环中 `n` 的更新顺序:当前代码在比较后立即更新 `n`,但第一次比较时 `n` 是最后一位,而 `a % 10` 在除法后变成了倒数第二位,这样比较的是相邻位,逻辑正确。但需要确认循环终止条件是否合理。