Онлайн компилятор C

#include <stdio.h> int main() { int a,b,c,d,e,max,min,C; 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; min = a; if(b>=min) min = b; if(c>=min) min = c; if(d>=min) min = d; if(e>=min) min = e; C=max+min; printf("%d",C); return 0; }
这段代码试图从5个整数中找出最大值和最小值,然后计算它们的和。但代码中存在逻辑错误,导致无法正确得到结果。

- 在找最小值之后,你把 `min` 重新赋值为 `a`,然后试图用同样的变量 `min` 去找最大值,但此时比较条件写反了(应该用 `>=` 来更新最大值,但你却把结果存到了 `min` 里)。而且变量 `max` 从未被赋值,所以最后 `C = max + min` 中的 `max` 是未初始化的,结果不可预测。

- 找最大值时,应该使用一个新的变量(比如 `max`)来存储,并且初始值也设为 `a`,然后用 `>=` 比较并更新 `max`。注意不要和找最小值的变量混淆。