Онлайн компилятор C

#include <stdio.h> int main() { int x, digit1, digit2; scanf("%d", &x); while(x>9){ digit1 = x%10; digit2 = ( x%100 )/10; if(digit1<=digit2){ printf("NO\n"); return 0; } x = x/10; } printf("YES\n"); return 0; }
这段代码的功能是判断一个整数的各位数字是否严格递减(从个位向高位看)。它从个位开始,依次比较相邻两位数字,如果发现某一位不大于前一位(即不满足严格递减),就输出"NO"并结束;如果所有相邻位都满足严格递减,则输出"YES"。

- 你的代码只比较了相邻的两位数字(digit1和digit2),但循环中每次只取最低两位,然后去掉个位。这样实际上只检查了相邻位是否递减,但并没有正确判断整个数字是否严格递减。例如输入321,你的代码会输出"YES",但输入123也会输出"YES",因为123的个位3大于十位2,但十位2不大于百位1,实际上不是严格递减。

- 注意你的比较逻辑:你检查的是digit1 <= digit2时输出"NO",这意味着你要求个位必须大于十位。但严格递减的定义是从左到右(高位到低位)递减,而你是从右到左(低位到高位)比较,方向反了。你应该检查高位是否大于低位,而不是低位是否大于高位。