Online Compiler C

#include <stdio.h> int main() { int a; int cnt = 0; scanf("%d", &a); int pre = a % 10; a /= 10; while (a > 0) { int no = a % 10; if (no >= pre) { cnt = 1; break; } pre = no; a /= 10; } if (cnt == 0) printf("YES"); else printf("NO"); return 0; }
这段代码的功能是判断一个整数的各位数字是否从左到右严格递减(即每一位都比前一位小)。它从个位开始向高位比较,如果发现某一位不小于前一位(即不满足递减),就输出"NO",否则输出"YES"。

- 代码中 `cnt` 的初始值为0,当发现不满足条件时设为1。但注意,如果数字只有一位数,循环不会执行,`cnt` 保持0,会输出"YES",这符合逻辑吗?请思考一位数是否应该被认为是严格递减的。
- 你的比较逻辑是从个位向高位,检查当前位是否大于等于前一位。但题目要求的是从左到右递减,也就是高位到低位递减。你的方向反了,导致判断条件可能不正确。例如输入321,从个位开始比较,1>=2? 不成立,但实际从左到右是递减的。你需要调整比较的顺序或方向。