Online Compiler C

#include <stdio.h> int main() { int a; scanf("%d", &a); int n = a % 10; while (a != 0) { a = a / 10; if (n > a % 10) { n = a % 10; } else { printf("NO"); return 0; } printf("YES"); return 0; }
这段代码试图判断一个整数的各位数字是否从左到右严格递减,但存在逻辑错误。

- 代码在循环内部每次比较后都立即输出结果并返回,导致循环只执行一次,无法检查所有数字位。
- 变量 `n` 初始化为个位数,但循环中每次更新 `a` 后,比较的是新的 `a` 的个位与当前 `n`,这不符合“从左到右”比较的顺序。

提示:
- 思考循环应该何时输出“YES”或“NO”。是否应该在循环结束后再决定输出结果?
- 检查比较的顺序:你是想比较相邻的两位数字,还是用当前最小数字去比较?注意每次除法后 `a` 的个位是原数的前一位。