在线编译器 C

#include <stdio.h> int main(void) { int a, b, c, d, e, min, max; scanf("%d%d%d%d%d", &a, &b, &c, &d, &e); min = a; if (b < min) min = b; if (c < min) min = c; if (d < min) min = d; if (e < min) min = e; max = a; if (max < b) max = b; if (max < c) max = c; if (max < d) max = d; if (max < e) max = e; printf("%d\n", max * min); return 0; }
这段代码从标准输入读取五个整数,然后找出其中的最大值和最小值,最后输出它们的乘积。

代码的逻辑是正确的,但有一个潜在问题:如果输入的数字个数不是恰好五个,或者输入格式不符合预期,程序的行为可能不可控。

- 考虑一下,如果用户输入的数字少于五个,scanf 会返回什么?你的程序没有检查 scanf 的返回值,这可能导致未初始化的变量被使用。
- 另外,如果输入的数字中有负数,你的最小值初始化逻辑仍然正确,但可以思考一下:如果所有数字都相同,你的代码是否还能正常工作?