在线编译器 C

#include <stdio.h> int main() { int i; scanf("%d",&i); int m=0,n=0; while (i!=0){ m=i%10; n=i/10%10; if(n=m) break; i=i/10; } if(n=m) printf("YES"); else printf("NO") return 0; }
这段代码的目的是判断一个整数中是否有相邻的两位数字相同。它从个位开始,依次比较相邻的两位数字,如果找到相同的一对就输出YES,否则输出NO。

代码中存在两个关键问题:

- 第9行和第13行使用了 `if(n=m)`,这是赋值操作而不是比较。在C语言中,比较相等应该使用 `==` 运算符。赋值表达式 `n=m` 会把m的值赋给n,并且这个表达式的值就是m的值,所以条件永远为真(除非m为0),导致逻辑错误。

- 第14行缺少分号,`printf("NO")` 后面需要加上 `;` 才能正确结束语句。