Online Compiler C

#include <stdio.h> int main() { int n, a, i = 0, p = 0; scanf("%d", &n); while (n != 0) { a = n % 10; b = (n / 10) % 10; if (a <= b) i = 0; else i = 1; n = n / 10; } if (i == 1) printf("YES"); else printf("NO"); return 0; }
这段代码试图判断一个整数的各位数字是否从左到右严格递增(即每个数字比前一位大)。但代码中存在逻辑错误,导致结果不正确。

- 变量 `b` 没有声明类型,直接使用了 `b = (n / 10) % 10;`,这会导致编译错误。你需要先声明 `b` 的类型。
- 每次循环中,`i` 都被重新赋值,导致最终只保留了最后一次比较的结果,而不是记录整个过程中是否所有相邻数字都满足递增关系。你需要思考如何累积判断结果,而不是每次覆盖。