输入4个整数,找出其中做大的数,用函数的嵌套调用来处理
解题思路:
- 在main函数中调用max4函数,找出最大的数;
- 在max4函数中再次调用max2函数,找出最大值;
- 返回到main函数中,在main函数中输出最大值的结果
#include<stdio.h>
int main()
{
int max4(int a, int b, int c, int d);//对max4的函数声明
int a, b, c, d, max;
printf("please enter 4 integer numbers:");//提示输入4个数
scanf("%d %d %d %d", &a, &b, &c, &d);//输入4个数
max = max4(a, b, c, d);//调用max函数,返回最大值
printf("max=%d\n", max);//输入最大值
return 0;
}
int max4(int a, int b, int c, int d)//定义max4函数
{
int max2(int a, int b);//对max2的函数声明
int m;
m = max2(a,b);//调用max2函数,得到a和b两个数中的最大值,放在m中
m = max2(m,c );//调用max2函数,得到a,b,c三个数中的最大值,放在m中
m = max2(m,d );//调用max2函数,得到a,b,c,d四个数中的最大值,放在m中
return m;//把m作为函数值返回main函数
}
int max2(int a, int b)//定义max2函数
{
if (a >= b)
return a;//若a>=b,将a为函数返回值
else
return b;//若a<b,将b为函数返回值
}
程序改进
可以将max2函数的函数体改为只用一个return语句,返回一个条件表达式的值
int max2(int a, int b)//定义max2函数
{
return (a >= b ? a : b);
}
将max4函数中,3个调用max2的语句用以下代码代替
int max4(int a, int b, int c, int d)//定义max4函数
{
int max2(int a, int b);
return max2(max2(max2(a, b), c), d);
}
先调用max2(a,b),得到a和b的最大值,再调用max(max(a,b),c),得到a,b,c中的最大值,最后由max2(max2(max(a,b),c),d);求得a,b,c,d中的最大值