Онлайн компилятор 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; }
这段代码的作用是:读入一个整数,然后找出这个整数各个数位上的最小数字和最大数字,并输出。

代码的思路是:先取个位数字作为初始的最小值和最大值,然后通过循环不断取出每一位数字,更新最小值和最大值,直到所有数位处理完毕。

- 循环条件 `while(x>=1)` 在 x 为 0 时会停止,但如果输入的数字本身是 0,循环不会执行,导致 min 和 max 没有被正确更新。考虑一下当输入为 0 时,程序的行为是否符合预期。
- 另外,如果输入的是负数,取模运算的结果可能不是预期的数字位,因为负数取模在 C 语言中会得到负数或零。思考一下如何处理负数的情况。