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

- 第18行的 `while(num>[=10)` 是语法错误,方括号和等号使用不正确,导致代码无法编译。循环条件应该检查数字是否还有至少两位。
- 第28行的 `else` 没有对应的 `if`,因为前面的 `if` 已经在循环内部,而 `else` 写在了循环外部,这会导致编译错误。你需要重新组织判断逻辑,确保在循环结束后才输出“NO”。

- 检查循环条件应该如何正确表示“数字大于等于10”。
- 思考如何在没有找到相邻相同数字的情况下,在循环结束后统一输出“NO”,而不是在循环内部或外部使用不匹配的 `else`。