函数的分类
1 用户使用角度分类
(1)库函数。它是由系统提供的,用户不必去定义,可以直接使用它。比如printf()函数、puts()函数等等。
(2)用户自定义函数。
2.2.2 函数的形式角度分类
(1)无参函数。在调用无参函数的时候,主调函数不向被调函数传递数据。无参函数一般用来执行指定的一组操作。无参函数可以带回也可以不带回函数值。
(2)有参函数。在调用函数时,主调函数通过参数向被调函数传输数据,例如strlen()函数就是有参函数,主函数传递一个字符串到strlen()函数,strlen返回值是这个字符串的长度。
2.3 函数的定义
c语言要求,在程序中用到的所有函数,必须“先定义,后使用”。例如想用max求两个数的最大值。必须先按规范对它进行定义,指定他的名字、函数返回类型、函数实现的功能以及参数的个数和类型,将这些信息通知给编译系统。这样程序执行max函数的时,编译系统就会按照定义式所指定的功能去执行。如果事先不定义,编译系统是无从知晓max是什么,要实现什么功能的。
对于c编译系统提供的库函数,是由编译系统事先定义好的,库文件中包含了对各函数的定义。程序设计者不必自己定义,只需要用#include指令把有关的头文件包含到本文件中即可。例如在程序中用到sqrt,fabs,sin等数学函数,就必须在文件模块开头写上:
#include<math.h>
库函数只提供了最基本、最通用的一些函数,而不可能包括人们在实际应用中所用到的所有函数。我们往往需要自己定义想要用的而库函数并没有提供的函数。
函数的嵌套调用
c语言的函数定义是互相平行、独立的,也就是说,在定义函数时,一个函数内不能定义另一个函数,也就是不能嵌套定义,但是可以嵌套调用函数,也就是说,在调用一个函数的过程中,又可以调用另一个函数
输入四个整数,找出其中最大的整数
#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 integer number:");
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); //声明max2
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;
}
函数的递归调用
递归调用:在调用一个函数的过程中又出现直接或间接的调用该函数本身,称为函数的递归调用。例如:
int fun(int a)
{
int b,c;
c=fun(b); //在执行的过程中又调用了函数fun
return(2*c);
}
在调用函数fun的过程中,又调用fun函数,这是直接调用本函数,
这种调用都是无终止的调用,显然程序中不可能出现这种状况,而是应该出现有限次数的、有终止的递归调用,这可以用if语句来控制
用递归的方法求n!
863

被折叠的 条评论
为什么被折叠?



