Онлайн компилятор 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; } no=pre; a/=10; } if (cnt == 0) printf("YES"); else printf("NO"); return 0; }
这段代码试图判断一个整数的各位数字是否从左到右严格递减。但代码中存在逻辑错误,导致结果不正确。

- 在循环中,`no=pre;` 这一行错误地覆盖了当前数字,应该反过来将当前数字赋值给前一个数字变量,以便下一次比较。
- 变量 `pre` 的初始值取自最低位,但循环从高位向低位处理,比较方向可能反了。你需要明确是从左到右还是从右到左比较,并相应调整初始化和更新逻辑。