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; if(a==b) { printf("YES\n"); return 0; // 找到后立即结束程序 } num=num/10;//去掉当前整数的最后一位数字作为下一次循环的数 } else { printf("NO\n"); } return 0; }
这段代码的目的是判断一个整数中是否存在相邻的两位数字相同。代码从用户输入一个整数开始,然后检查是否有相邻数字相等。

代码中存在一个语法错误:`while(num>[=10)` 这一行不符合C语言的语法规则。`[=10]` 不是有效的运算符或表达式,应该是想写 `>=10` 但写成了 `>[=10`。

- 检查 `while` 循环的条件部分,`>[=10` 需要修正为正确的比较运算符。C语言中“大于等于”的写法是 `>=`,而不是 `>[=`。
- 另外,`else` 前面不应该有 `}` 和 `;`,因为 `else` 必须紧跟在 `if` 或 `while` 的语句块之后,不能单独出现。这里的 `else` 似乎是想对应 `while` 循环结束后没有找到相邻相同数字的情况,但 `else` 不能直接跟在 `while` 后面。可以考虑在循环结束后用另一个 `if` 判断来输出 `NO`。