在线编译器 C

#include<stdio.h> int main() { int n,count=0; scanf("%d",&n); if(n<0) n=-n; while(n>0) { if(n%10<n%100) { count++; } n=n/10; } if(count=0) { printf("YES"); } else{ printf("NO"); } return 0; }
这段代码试图判断一个整数中是否所有相邻两位数字都满足某种条件,但逻辑有误。它读取一个整数,如果为负则取绝对值,然后循环处理数字,但判断条件 `n%10 < n%100` 并不是比较相邻两位数字,而是比较个位数与最后两位组成的数。最后用 `count` 来输出 YES 或 NO,但条件判断也写错了。

- 注意 `if(count=0)` 这一行:这里用的是赋值运算符 `=`,而不是比较运算符 `==`。这会导致 `count` 被赋值为 0,然后条件永远为假,所以总是输出 NO。需要检查这个比较写法。
- 循环中的条件 `n%10 < n%100` 并不是比较相邻两位数字。例如 n=123,n%10=3,n%100=23,比较的是 3 和 23,而不是相邻的两位。要比较相邻两位,需要分别取出当前位和下一位,比如用 `n%10` 和 `(n/10)%10`。