我编写了一个 C 程序,使用函数查找最多 4 个数字。我用 5 种方法编写了该函数。任何人都可以建议哪种方法是最好的方法。
方法一:
int max_of_four(int a, int b, int c, int d){
if((a>b)&&(a>c)&&(a>d))
return a;
else if ((b>a)&&(b>c)&&(b>d))
return b;
else if ((c>a)&&(c>b)&&(c>d))
return c;
else
return d;
}
方法二:
int max_of_four(int a, int b, int c, int d){
int max=a;
if (max<=b)
max = b;
if (max<=c)
max = c;
if (max<=d)
max = d;
return max;
}
方法三:
int max_of_four(int a, int b, int c, int d){
int max = a;
max = (max<=b)?b:max;
max = (max<=c)?c:max;
max = (max<=d)?d:max;
return max;
}
方法四:
int max_of_four(int a, int b, int c, int d)
{
int max = -1;
int arr1[4] = {a,b,c,d};
for(int i=0;i<=4;i++)
{
if(max <= arr1[i])
max = arr1[i];
}
return max;
}
方法5:
int max(int a, int b) {
return a > b ? a : b;
}
int max_of_four(int a, int b, int c, int d) {
return max(a, max(b, max(c, d)));
}
调用max_of_four的主要函数如下:
int main() {
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
int ans = max_of_four(a, b, c, d);
printf("%d", ans);
return 0;
}
请通过解释每种方法的优缺点来说明哪种方法是最好的方法。
这个怎么样:
int max_of_four(int a, int b, int c, int d)
{
const int max_ab = (a >= b) ? a : b;
const int max_cd = (c >= d) ? c : d;
return (max_ab >= max_cd) ? max_ab : max_cd;
}
这里的想法是局部变量很便宜并且可以放置在寄存器中。