Online Compiler C

#include<stdio.h> int main() { int n,max=0,min=9,d; scanf("%d",n); while(n>=0){ d=n%10; if (d>max) max=d; if (d<min) min=d; n=n/10;} return 0; }
这段代码的目的是读取一个整数,然后找出这个整数中各位数字的最大值和最小值。但代码中存在几个问题,导致它无法正确运行。

- 在 `scanf` 中,变量 `n` 前面缺少了取地址符号 `&`,这会导致程序无法正确读取输入的值。
- 循环条件 `while(n>=0)` 在 `n` 为0时仍会执行,但0除以10后还是0,会导致无限循环。实际上,当 `n` 变为0时应该停止处理,因为已经没有更多位数了。通常使用 `while(n>0)` 会更合适,但要注意如果输入的数字本身就是0,需要单独处理。
- 代码最后没有输出结果,所以即使计算正确,你也看不到最大值和最小值。