本篇继续进行函数的讲解,代码均来自于VS环境下。
目录
一、函数的嵌套调用
C语言的函数定义是相互独立、相互平行的,即不能嵌套定义,但可以嵌套调用函数,即在调用一个函数的同时再调用一个函数。
【例1】输入4个整数,找出其中最大的数。用定义函数来完成。
#include<stdio. h>
int main()
{
int max4(int a,int b,int c,int d);
int a,b,c,d,max;
printf("Please enter 4 interger numbers:");
scanf("%d %d %d %d",&a,&b,&c,&d);
max=max4(a,b,c,d);
printf("max=%d \n",max);
return 0;
}
int max4(int a,int b,int c,int d)
{
int max2(int a,int b);
int m;
m=max2(a,b);
m=max2(m.c);
m=max2(m,d);
return(m);
}
int max2(int a,int b)
{
if(a>=b)
return a;
else
return b;
}
可以清楚地看到,在主函数中要调用 max4 函数,因此在主函数的开头,要对max4函数作声明。在max4函数中3次调用max2函数,因此在max4函数的开头要对max2函数作声明。由于在主函数中没有直接调用max2函数,因此在主函数中不必对max2 函数作声明,只须在 max4 函数中作声明即可。
max4函数执行过程是这样的:第1次调用max2函数得到的函数值是a和b中的最大者,把它赋给变量m,第2次调用max2得到m和c中的最大者,也就是a,b,c中的最大者,再把它赋给变量m。第3次调用max2得到m和d中的最大者,也就是a,b,c,d中的最大者,再把它赋给变量m。这是一种递推方法,先求出2个数的大者;再以此为基础求出3个数的大者;再以此为基础求出4个数的大者。m的值一次一次地变化,直到实现最终要求。
程序改进:
(1)可以将max2 函数的函数体改为只用一个return语句,返回一个条