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

#include <stdio.h> int main() { int unsigned num; int max = 0; int min = 9; scanf("%u", &num); 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; }
这段代码的作用是:读入一个无符号整数,然后找出这个整数的十进制表示中最小和最大的数字,并先输出最小数字,再输出最大数字。

代码逻辑基本正确,但有一个细节问题需要注意。

- 当输入的数字是0时,while循环条件 `num > 0` 不成立,循环体不会执行,导致min和max保持初始值(min=9, max=0),输出结果会是 "9 0",这不符合预期,因为0本身只有一个数字0,应该输出 "0 0"。
- 考虑一下如何单独处理输入为0的情况,或者调整循环条件使其也能处理0。