Online Compiler C

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

- 代码中 `else` 的位置不对,它不能跟在 `n=n/10;` 后面,因为 `else` 必须紧跟在 `if` 语句之后。
- 循环的逻辑是每次检查当前最后两位是否相等,如果相等就输出"YES"并结束,但如果不相等,你希望继续检查下一位,而当前代码在 `if` 之后立即执行 `n=n/10`,然后又跟了一个 `else`,这会导致语法错误。

- 提示1:`else` 必须直接跟在 `if` 的代码块后面,中间不能有其他语句。想一想如何调整结构,让循环在每次迭代中先判断是否找到相同数字,如果没有找到,再继续去掉最后一位。
- 提示2:如果整个循环结束后都没有找到相同数字,应该在哪里输出"NO"?当前代码在循环内部就输出了"NO",这会导致只要有一次不相等就立即输出,而不是检查完所有数字。