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

#include <stdio.h> int main() { int unsigned num; int max=0; int min=0; scanf("%u",&num); while(num>0){ int d=num%10; num=num/10; if(d>=max){ max=d;} if(d<=min){ min=d; } } }
这段代码试图找出输入数字中最大和最小的数字,但存在逻辑问题。

- 变量 `min` 初始化为 0,这会导致问题:如果输入的数字中所有数字都大于 0,那么 `min` 永远不会被更新,因为 `d <= min` 的条件永远不会成立。例如输入 123,最小数字应该是 1,但程序会输出 0。
- 变量 `max` 初始化为 0 是可行的,因为任何非零数字都会大于或等于 0,但如果输入的数字全是 0,则 `max` 会正确保持为 0。

提示:
- 思考如何初始化 `min`,使得它能正确记录数字中的最小值。考虑使用输入数字的第一位数字作为初始值。
- 注意 `while` 循环结束后,程序没有输出结果。你需要添加打印语句来显示 `max` 和 `min` 的值。