在线编译器 C

#include <stdio.h> int main() { int n; scanf("%d", &n); if (n == 0) { printf("0 0"); return 0; } int min_digit = 9; int max_digit = 0; int temp = n; while (temp > 0) { int digit = temp % 10; if (digit < min_digit) min_digit = digit; if (digit > max_digit) max_digit = digit; temp = temp / 10; } printf("%d %d", min_digit, max_digit); return 0; }
这段代码的功能是:读取一个整数,找出它的十进制表示中的最小数字和最大数字,并输出这两个数字。

代码逻辑基本正确,但有一个边界情况需要留意:当输入为负数时,while循环条件 `temp > 0` 会直接不执行,导致min_digit和max_digit保持初始值(9和0),输出结果不正确。

- 考虑如何处理负数的情况。负数的数字部分和正数一样,但符号本身不是数字。你可以先取绝对值再处理。
- 注意初始值min_digit设为9、max_digit设为0,对于负数取绝对值后仍然适用,但需要确保循环能执行。