输出4个整数,找出其中最大的数。用函数嵌套调用来处理

/* 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); //把函数调用作为函数参数
}

 

posted @ 2018-03-24 12:49  天下无丝  阅读(2907)  评论(0编辑  收藏  举报