Online Compiler C

#include <stdio.h> int main() { int n,p,max=0,min=9; scanf ("%d" ,&n); while (n > 0){ p=n%10; if(p>= max){ max=p; } if(p<= min){ min=p; } n=n/10; } printf("%d %d", min,max); return 0; }
这段代码的功能是:读取一个整数,然后找出这个整数中每一位数字的最小值和最大值,并输出。

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

- 变量 `min` 初始化为 9,这本身没问题,因为数字最大是 9,所以任何数字都会小于等于 9。但这里的关键是:如果输入的数字是 0 本身,循环不会执行,`min` 和 `max` 会保持初始值 9 和 0,输出就会是 "9 0",这不符合预期。你需要考虑输入为 0 的情况。

- 另外,当输入的数字只有一位时,循环也能正确执行,但你可以思考一下:如果输入的是负数,代码会如何处理?目前代码只处理了正数。