/* p183 例7.5 输出4个整数,找出其中最大的数。用函数嵌套调用来处理
解题思路:这个问题并不复杂,完全可以只用一个主函数就可以得到结果。在main函数中调用max4函数,
max4函数的作用是找出4个数中的最大者。在max4函数中再调用另一个函数max2。max2函数用来找出两个
数中的大者。在max4中通过多次调用max2函数,可以找出4个数中的大者,然后把它作为函数值返回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:");//提示输入四个数
scanf("%d %d %d %d",&a,&b,&c,&d); //输入四个数
max = max4(a, b, c, d); //调用max4函数,得到4个数中的最大者
printf("max = %d\\n",max); //输出4个数中的最大者
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作为函数返回值
}
运行结果:
程序改进:
(1)可以将max2函数的函数体改为只用一个return语句,返回一个条件表达式的值:
int max2(int a, int b) //定义max2函数
{
return(a >= b ? a:b); //返回条件表达式的值,即a和b中的大者
}
(2) 在max4函数中,3个调用max2的语句(如m=max2(a,b);)可以用以下一行代替:
m=max2(max2(max2(a,b),c),d); //把函数调用作为函数参数
甚至可以取消变量m,max4可写成
int max4(int a,int b,int c,int d) //定义max4函数
{
int max2(int a, int b); //对max2的函数声明
return max2(max2(max2(a,b),c),d); //把函数调用作为函数参数
}