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; }
这段代码试图判断一个整数中是否有相邻的两位数字相同。代码逻辑基本正确,但存在语法错误和结构问题。

- 第16行 `while(num>[=10)` 有语法错误。`[=10]` 不是合法的C语法。你需要检查循环条件的写法,确保它正确表示“num大于等于10”。

- 第26行的 `else` 位置不对。`else` 必须紧跟在 `if` 语句块之后,不能放在 `num=num/10;` 后面。你需要重新组织循环内的逻辑,让 `if-else` 结构完整,并且只在循环结束后才输出“NO”。