在线编译器 C

#include <stdio.h> int main() { int n; scanf("%d", &n); if (n == 0) { printf("%d %d", n, n); return 0; } int max = 0, min = 9; while (n > 0) { int x = n % 10; if (max <= x) max = x; if (min >= x) min = x; n = n / 10; } printf("%d %d", min, max); return 0; }
这段代码的功能是:读入一个整数,找出它的各位数字中的最小值和最大值,并先输出最小值再输出最大值。代码对输入为0的情况做了特殊处理,直接输出两个0。

- 当输入的数字包含重复的极值数字时,比如112,你的代码会正确更新max和min,但注意你用了<=和>=,这会导致当遇到与当前极值相等的数字时也会更新,虽然结果相同,但逻辑上可以更简洁。
- 考虑输入负数的情况:你的while循环条件n>0会直接跳过,导致max和min保持初始值0和9,输出结果错误。你需要思考如何处理负数,比如先取绝对值再处理。