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

#include <stdio.h> int main() { int x, digit, min, max; scanf("%d", &x); min = x%10; max = X%10; while(x>=1){ digit = x%10; if(digit<=min){ min = digit; } if(digit>=max){ max = digit; } x = x/10; } printf("%d %d\n", min, max); return 0; }
这段代码的目的是读取一个整数,然后找出它的各位数字中的最小值和最大值,并输出。代码整体思路正确,但存在一个关键错误。

- 第6行中 `max = X%10;` 使用了大写字母 `X`,但变量名是 `x`(小写)。C语言区分大小写,所以这里会编译错误。需要将 `X` 改为 `x`。

- 另外,循环条件 `while(x>=1)` 在 `x` 为0时不会执行,但如果输入的数字是0,程序会直接跳过循环,导致 `min` 和 `max` 没有被正确计算。可以思考一下如何处理输入为0的情况。