无论输入如何,最小函数都会给出输出6422164
我想实现一个返回四个元素中最小值的函数。我编写了以下代码:
#include <stdio.h>
int max_of_four(int a, int b, int c, int d) {
int max;
if (a > b) {
if (a > c) {
if (a > d) {
max = a;
}
}
} else if (b > a) {
if (b > c) {
if (b > d) {
max = b;
}
}
} else if (c > a) {
if (c > b) {
if (c > d) {
max = c;
}
}
} else {
max = d;
}
return max;
}
int main() {
// initializing int a, b, c, d, max;
scanf("%d %d %d %d", &a, &b, &c, &d);
int ans = max_of_four(a, b, c, d);
printf("%d", ans);
return 0;
}
6422164无论输入如何,此代码都会给我输出。我的代码有什么问题?
回答
您还没有覆盖的情况下正确,如什么,如果a=1和b=2和c=3。第二个if( b>a) 中的条件为真,块进入。然后条件b>c为假并且不会进入其他块。最后返回未初始化的变量max,返回一个未定义的值,您看到它是 6422164。
更好的写法是初始化max为第一个值,然后依次将每个值与 比较max,如果当前数字大于最大值则更新它。
int max_of_four(int a,int b,int c,int d) {
int max = a;
if (b > max) max = b;
if (c > max) max = c;
if (d > max) max = d;
return max;
}