Online Compiler C

#include <stdio.h> int main() { int N,A=0,B=0; scanf("%d",&N); while(N>=0) { A = N%10; B = (N/10)%10; if(A == B) { printf("YES"); return 0; } N = N/10; } if(A != B) printf("NO"); return 0; }
这段代码试图判断一个整数中是否存在相邻的相同数字。它从个位开始,每次比较当前位和它的前一位(十位),如果找到一对相同就输出YES并结束,否则继续去掉最后一位。但逻辑上有问题。

- 你的循环条件是 `N>=0`,但 `N` 不断除以10,最终会变成0,而0也满足条件,导致循环继续处理0,可能产生错误判断。
- 当 `N` 是一位数时,`(N/10)%10` 会得到0,此时如果 `N%10` 也是0(即N=0),会误判为有相邻相同数字。实际上一位数不应该有相邻数字。