这段代码的功能是判断一个整数的各位数字是否从左到右非递增(即每一位都不大于前一位)。它从右向左检查相邻两位,如果发现某一位小于它右边的位,就输出"NO",否则最终输出"YES"。 - 你的循环条件 `while (n >= 10)` 意味着当 n 只剩一位数时退出循环,此时会直接输出"YES"。但注意,如果输入的数字本身就是一位数,比如 5,循环不会执行,直接输出"YES",这是正确的。但问题在于,你比较的是当前最低位 x 和它左边的一位 y,而循环中每次比较后都去掉最低位,这实际上是从右向左比较,而不是从左向右。例如数字 321,从右向左比较:1<2 会输出"NO",但实际从左向右是递减的,应该输出"YES"。你需要调整比较的方向。 - 另外,你的代码没有处理负数的情况。如果输入负数,取模运算的结果可能为负,导致比较逻辑出错。可以考虑先取绝对值,或者明确题目是否只考虑非负整数。