Online Compiler C

#include <stdio.h> int main() { int n; scanf("%d",&n); while (n>9){ int digit1=n%10; int digit2=(n/10)%10; if(digit2>=digit1){ printf("NO"); return 0; } n/=10; } printf("YES\n"); return 0; }
这段代码的功能是判断一个整数各位数字是否从左到右严格递减。它从右向左检查相邻两位,如果发现某一位不小于右边一位,就输出NO并结束。

- 你的循环条件 `while (n>9)` 只处理至少两位数的数字,但循环内部每次只比较最后两位,然后去掉最后一位。这样只能检查相邻的两位,但无法保证所有位都满足递减关系。例如输入 321,第一次比较 1 和 2 时,2>=1 成立,会输出 NO,但实际 321 是递减的。
- 你的比较逻辑 `digit2>=digit1` 是在检查左边数字是否大于等于右边数字,但题目要求的是严格递减,所以左边应该大于右边。这里条件写反了,导致正确递减的数字也会被判为NO。