Online Compiler C

#include <stdio.h> int main() { int num; scanf("%d",&num); // 处理负数:只考虑数字部分,负号不影响数字相邻 if (num < 0) { num = -num; } // 如果数字小于 10,不可能有相邻两位 if (num < 10) { printf("NO\n"); return 0; } // 当数字还有至少两位时 int a,b=0; while(num>[=10) { a=num%10; b=(num/10)%10; num=num/10; if(a==b) { printf("YES\n"); return 0; // 找到后立即结束程序 } else { printf("NO\n"); } return 0; } return 0; }
这段代码的目的是判断一个整数中是否存在相邻的两位数字相同。代码整体思路正确,但有几处语法和逻辑问题。

- 第20行 `while(num>[=10)` 的语法错误。`[=10]` 不是有效的C语法,应该是比较运算符。你需要检查循环条件应该如何正确书写,确保循环能正确遍历数字的每一位。

- 循环内部的逻辑有误。你在每次比较后立即输出结果并返回,这样只检查了最后两位。应该遍历所有相邻位,只有全部检查完都没有找到相同相邻位时才输出"NO"。你需要调整输出语句的位置,让"NO"在循环结束后输出。