在线编译器 C

#include <stdio.h> int main(void) { int a, b, c, d, e, min, max, n; scanf("%d%d%d%d%d", &a, &b, &c, &d, &e); min = a; if (a <= b && a <= c && a <= d && a <= e) min = a; else if (b <= a && b <= c && b <= d && b <= e) min = b; else if (c <= b && c <= a && c <= d && c <= e) min = c; else if (d <= b && d <= c && d <= a && d <= e) min = d; else if (e <= b && e <= c && e <= d && e <= a) min = e; max = a; if (max < b) max = b; if (max < c) max = c; if (max < d) max = d; if (max < e) max = e; n = max +min; printf("%d", n); return 0; }
这段代码的功能是:读入5个整数,分别找出其中的最大值和最小值,然后输出它们的和。

代码中找最大值的方式是正确的:从a开始,依次与b、c、d、e比较,如果遇到更大的就更新max。

找最小值的方式虽然逻辑上正确,但写法过于复杂。你用了多个if-else if条件,每个条件都检查当前变量是否小于等于所有其他变量。这种写法容易出错,而且不够简洁。

- 提示1:找最小值可以像找最大值那样,用一个变量min从a开始,然后依次与b、c、d、e比较,如果遇到更小的就更新min。这样代码会更简洁,也不容易遗漏条件。

- 提示2:检查一下你的最小值判断条件,比如第三个条件 `c <= b && c <= a && c <= d && c <= e`,这里比较的顺序不一致,但逻辑上仍然正确。不过,如果所有数都相等,你的代码能正确找出最小值吗?想一想当所有数相等时,第一个if条件会成立吗?