在线编译器 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; } } }
这段代码的功能是:读取一个无符号整数,然后找出这个数中每一位数字的最大值和最小值。代码逻辑基本正确,但存在一个关键问题。

- 变量 `min` 初始化为 9,这本身没问题,但如果输入的数字中没有任何一位小于等于 9(比如所有位都是 9),那么 `min` 会保持 9,这是正确的。但更关键的问题是:如果输入的数字是 0,循环不会执行,`max` 和 `min` 会保持初始值 0 和 9,这不符合实际(0 的各位数字应该都是 0)。
- 代码没有输出结果。你计算出了 `max` 和 `min`,但没有用 `printf` 将它们打印出来,所以程序运行后看不到任何输出。