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") break; else n = a % 10; } return 0; }
这段代码试图判断一个整数的相邻两位数字是否相等,但存在语法和逻辑问题。

- 第8行的 `if` 语句后面多了一个分号,导致 `if` 的条件判断结束,后面的 `printf` 和 `break` 总是会执行,而 `else` 部分则变成了语法错误。
- 循环逻辑中,每次循环先更新 `a` 再比较 `n` 和新的 `a % 10`,这样会跳过第一次比较(即个位和十位的比较),并且当数字只有一位时循环也会有问题。

- 检查第8行 `if` 后面的分号,思考它如何改变了程序的执行流程。
- 考虑循环中变量更新的顺序:是先比较再更新,还是先更新再比较?这会影响你能否正确比较相邻的两位数字。