资源描述:
《C语言函数介绍ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章函数函数定义的一般形式函数参数和函数的值函数的调用数组作为函数参数函数的嵌套调用函数的递归调用局部变量和全局变量内部函数和外部函数本章要求及作业§8.1概述Main()scanf()printf()max()x()printf()y()getchar()max()有返回值无返回值无参函数有参函数函数的分类:1、根据有无返回值分:2、根据函数有无参数来分:§8.2函数定义的一般形式1.无参函数定义一般形式类型标识符函数名(){说明部分语句}该函数无形式参数列表2.有参函数定义一般形式类型标识符函数名(形式参数列表){说明部分语句}3、函数定义
2、的其他形式1).可以有空函数dummy(){}2).无形式参数void无返回值函数max(...){...}函数体中无任何语句,称为“空函数§8.3函数参数和函数的值一、形式参数和实际参数形式参数:在定义函数时使用的参数,简称“形参”。变量实际参数:在调用函数时使用的参数,简称“实参”。表达式二、函数的返回值1、函数中的return语句返回函数的值,一个函数可以有一个以上的return语句,执行到哪一个return语句,哪个return语句就起作用。例如:max(intx,inty){return(x>y?x:y);}2、定义函数时,应指明函数(返
3、回值)类型3、如果函数的类型与return语句中表达式的类型不同,以函数的类型为准4、只要函数定义了返回值类型,无论函数中是否有return语句,函数均返回一个值。下面语句也是合法的:main(){inta,b,c;a=star();b=message();c=star();printf(“%d,%d,%d”,a,b,c);}5、为了明确规定函数不返回任何值,在函数定义中,“类型标识符”必须声明为void(无类型或称空类型)。§8.4函数的调用一、函数调用的一般形式函数名(实参列表)二、函数调用的方式printstar();/*函数调用作为一个语句
4、*/c=2*max(a,b);/*函数作为表达式的一部分*/m=max(a,max(b,c));/*函数的值作为一个函数的参数*/printf("%d",max(a,b));/*函数的值作为一个函数的参数*/三、对被调函数的说明在一个函数中调用另一个函数,需要具备那些条件:1、被调用的函数必须已经存在。2、使用系统预定义的函数(库函数),必须包含头文件3、程序员自己定义的函数,在调用前,一般应声明其原型。[例8.5]floatadd(floatx,floaty);/*声明自己写的add函数的原型*/main(){floata,b,c;scanf("
5、%f,%f",&a,&b);c=add(a,b);printf("sumis%f",c);}floatadd(floatx,floaty)/*定义add函数*/{floatz;z=x+y;returnz;}在文件的开头声明函数原型。floatadd(floatx,floaty);在main的开头声明函数原型。不需要函数声明的情况1、返回值为整型的函数。2、被调用函数的定义出现在主调用函数之前。3、在所有函数定义之前,文件的开头,已经作了函数声明。§8.5函数的嵌套调用函数的嵌套调用:在一个函数的函数体内调用另一个函数。scanf()x()print
6、f()y()getchar()max()main()a()b()调用a()调用b()END调用一个函数过程中又调用了另一个函数在函数的嵌套调用中,函数的执行采取后调用先返回的原则。即最内层的函数调用最先返回函数值,由内到外依次返回。求解x3-5x2+16x-80=0的根解题步骤:1.取两个不同点x1,x2如果f(x1)和f(x2)符号相反,则[x1,x2]区间必有一个根,如果同号,则应改变x1和x2,直至异号为止2.连接f(x1)和f(x2),交x轴于x点,则x=[x1*f(x2)-x2*f(x1)]/[f(x2)-f(x1)]3.求f(x)4.若
7、f(x)与f(x1)同号,则(x,x2)有根,此时将x作为x1若f(x)与f(x2)同号,则(x,x1)有根,此时将x作为x25.重复2~4的步骤,直至f(x)<某个值,视精度要求而定x1f(x1)xx2f(x2)f(x)***例8_6.c********函数的调用********************#includefloatroot(x1,x2)floatx1,x2;{inti;floatx,y,y1;y1=f(x1);do{x=xpoint(x1,x2);y=f(x);if(y*y1>0){y1=y;x1=x;}elsex2
8、=x;}while(fabs(y)>=0.0001);return(x);}floatxpoint(x1,x2)float