Online Compiler C

#include <stdio.h> int main() { int unsigned num; int max = 0; int min = 9; scanf("%u", &num); if (num == 0) printf("0"); while (num > 0) { int d = num % 10; num = num / 10; if (d >= max) { max = d; } if (d <= min) { min = d; } printf("%d %d", min, max); } return 0; }
这段代码的目的是读取一个无符号整数,然后找出它的各位数字中的最小值和最大值,并输出。但代码中存在几个问题。

首先,程序在每次循环中都会输出当前的min和max,而不是在循环结束后输出最终结果。这会导致输出很多组数字,而不是最终的最小值和最大值。

其次,当输入的数字为0时,程序只输出"0",但没有输出最小值和最大值。对于数字0,它的各位数字只有0,所以最小值和最大值都应该是0。

- 提示1:思考一下,应该在循环内部还是循环结束后输出最终的最小值和最大值?目前每次循环都输出,这会导致什么结果?
- 提示2:对于输入为0的情况,程序只输出了"0",但没有输出最小值和最大值。如何让程序在输入为0时也能正确输出最小值和最大值?