Online Compiler C

#include <stdio.h> int main() { int n; scanf("%d", &n); int x = 0, y = 0; while (n > = 10) { x = n % 10; y = n / 10 % 10; if (x > y) { printf("NO"); return 0; } n = n / 10; } printf("YES"); return 0; }
这段代码试图判断一个整数的各位数字是否从左到右非递增(即每一位不大于前一位)。它从最低位开始比较相邻两位,如果发现某一位大于它右边的位,就输出"NO"并结束,否则循环结束后输出"YES"。

- 代码中 `while (n > = 10)` 有一个语法错误:`> =` 中间不能有空格,应该写成 `>=`。这个错误会导致编译失败。
- 逻辑上,你从最低位开始比较相邻两位,但题目要求的是从左到右的顺序。你的比较方向是反的:`x` 是个位,`y` 是十位,如果 `x > y` 就输出"NO",这实际上是在检查数字是否**非递减**(从高位到低位看),而不是非递增。你需要确认题目要求的是递增还是递减,并相应调整比较条件。