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

#include <stdio.h> int grow_up(int n){ int num1,num2; while(n>0){ num1=n%10; n=n/10; num2=n%10; if(num1<num2){ return 0; } } return 1; } int main() { int x; scanf("%d", &x); printf("%d",grow_up(x)); return 0; }
这段代码定义了一个函数 `grow_up`,它检查一个整数的各位数字是否从左到右严格递增(即每个数字都大于前一个数字)。如果是则返回1,否则返回0。主函数读取一个整数并输出检查结果。

代码的逻辑有一个问题:它从右向左比较数字,但条件 `num1 < num2` 是在检查当前位是否小于下一位(即从右向左看是否递增),这实际上是在检查数字是否从右向左递增,而不是从左向右。

- 提示1:你的循环从最低位开始比较,但题目要求的是从左到右递增。思考一下,当你从右向左处理数字时,比较的方向应该反过来。
- 提示2:注意在循环中,当 `n` 只剩一位数时,`num2` 会变成0,这可能导致错误的比较结果。考虑循环何时应该停止。