Онлайн компилятор C

#include <stdio.h> int main() { int N,A=0,B=0; scanf("%d",&N); while(N>=10) { A = N%10; B = (N/10)%10; if(A == B) { printf("YES"); return 0; } N = N/10; } printf("NO"); return 0; }
这段代码的功能是判断一个整数中是否存在相邻的两位数字相等。它从个位开始,依次比较相邻的两位数字,如果找到相等就输出YES并结束,否则输出NO。

- 你的循环条件 `while(N>=10)` 是正确的,但注意当N变成一位数时循环结束,此时最后一位数字没有和前面的数字比较过。例如输入11时,第一次循环比较个位1和十位1,发现相等输出YES,这是正确的。但输入101时,循环会先比较个位1和十位0,不相等,然后N变成10,再比较个位0和十位1,也不相等,最后输出NO,这也是正确的。不过考虑输入112时,第一次比较个位2和十位1,不相等,N变成11,第二次比较个位1和十位1,相等输出YES,正确。

- 你的代码逻辑基本正确,但有一个潜在问题:当N是两位数时,比如输入10,第一次循环比较个位0和十位1,不相等,然后N变成1,循环结束,输出NO,这是正确的。但考虑输入100时,第一次比较个位0和十位0,相等输出YES,正确。所以目前代码功能是完整的。

- 不过你的代码中,每次循环都重新计算A和B,实际上可以简化,但这不是错误。主要需要关注的是:你的代码只检查了相邻两位是否相等,没有检查所有可能的相邻对,但你的循环通过不断除以10确实检查了所有相邻对,所以逻辑正确。