Онлайн компилятор C

#include <stdio.h> int main() { int n; scanf("%d", &n); int flag = 0; while (n > 0) { int last = n % 10; int pre = (n / 10) % 10; if (last < pre) { flag = 1; break; } n /= 10; } if (flag == 1) printf("YES"); else printf("NO"); return 0; }
这段代码的功能是判断一个整数的各位数字是否从左到右严格递增。它从右向左逐位比较相邻数字,如果发现某一位小于它右边的一位(即从右向左看是递减),就认为数字不满足递增条件。

你的代码逻辑有一个方向上的问题。题目要求判断从左到右是否递增,但你的循环是从右向左比较相邻数字。例如数字123,从右向左看3>2>1,你的条件`last < pre`永远不会成立,会输出"NO",但实际应该是"YES"。

- 检查你的比较方向:`last`是当前最低位,`pre`是它的左边一位。从左到右递增意味着左边的数字小于右边的数字,你现在的比较条件是否对应了这个关系?
- 思考一下:如果数字是321,从左到右是递减,你的代码会输出什么?这个结果是否符合预期?