我想实现一个返回最少四个元素的函数。我写了以下代码:
#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
) 中的条件为真,进入 block 。那么条件 b>c
将是 false 并且不会进入其他 block 。最后返回 uninitialised 变量 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;
}
关于c - 无论输入如何,Min 函数都会给出输出 6422164,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66085884/