函数的定义和嵌套调用.ppt_第1页
函数的定义和嵌套调用.ppt_第2页
函数的定义和嵌套调用.ppt_第3页
函数的定义和嵌套调用.ppt_第4页
函数的定义和嵌套调用.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12讲函数的嵌套调用,一、概述1、C程序的模块化结构2、函数定义的一般形式二、函数间的数据传送1、形参与实参2、函数的返回值3、Void函数,4、函数原型5、数组作为函数的参数三、函数的调用1、函数调用的一般形式2、函数嵌套调用,1、C程序的模块化结构,结构化程序设计方法:自顶向下,逐步细化;模块化设计;结构化编码。特点:程序结构清晰,易于维护,增加了函数的可重用性和可扩充性。,一、概述,格式一:类型符函数名称(形参表)形参说明数据说明语句可执行语句格式二:类型符函数名称(类型形参1,)数据说明语句可执行语句,2、函数定义的一般形式,函数定义的一般形式举例:,(1)floatsum(x,y)floatx,y;intz;z=x+y;returnz;,(2)floatsum(floatx,floaty)intz;z=x+y;returnz;,函数定义的一般形式说明:,(1)floatsum(x,y)floatx,y;intz;z=x+y;returnz;,类型说明符:指明函数的类型,函数的类型是指函数的返回值的类型,函数返回值所具有的数据类型的种类与变量相同。省略时则默认为int型。若明确表示函数不带回值,可以用void作类型符,称无类型或称空类型。,floatsum(x,y)floatx,y;intz;z=x+y;returnz;,函数名:通常是一个标识符,在一个程序中除了主函数外其余函数的名字可以任意取,但应有意义。()函数标志。,floatsum(floatx,floaty)floatsum(x,y)floatx,y;intz;z=x+y;returnz;,参数表(形参表):函数定义时的参数称为形式参数,形式参数彼此间用逗号分隔。形式参数省略时称无参函数,但此时函数名后的圆括号不能省。形参说明是用来指明各个形式参数的类型,它随形参的存在而存在。,floatsum(x,y)floatx,y;intz;z=x+y;returnz;,函数体:函数中最外层一对花括弧括起来的内容,它由若干个数据说明语句和可执行语句组成,决定函数要实现的功能、完成的任务。函数体内若无任何语句时,为空函数。,例编写自定义函数计算:,分析:确定形参:求c必须知道f的大小,设形参为temp。确定函数:函数的返回值即为c的值,设为实型。,程序:floatftoc(temp)floattemp;floatc;c=(5./9.)*(temp32);returnc;,例编写一个自定义函数求n!,分析:确定形参:求n!必须知道n的大小,设形参为n。确定函数:函数的返回值即为n!的值,设为实型。,程序:floatjiechen(intn)floatx,y;for(x=y=1.0;x=n;x+)y*=x;returny;,实参(实际参数)是函数调用时调用函数传送给被调用函数参数的实际值。实参可以是常量、变量和表达式,实参必须有确定的值。例如:fabs(-2);putchar(c);sqrt((x*x+2)*(y+z);,二、函数间的数据传送,1、形参与实参,形参(形式参数)是函数定义时,参数表中的参数。形式参数只能是变量。在函数定义时,参数表中的形参并没有具体的值,系统也不为其分配存储单元。例如:max(floatx,floaty)floatftoc(floattemp),例形参和实参的运用,try(intx,inty,intz)printf(2)x=%d,y=%d,z=%dn,x,y,z);z=x+y;x=x*x;y=y*y;printf(3)x=%d,y=%d,z=%dn,x,y,z);main()inta=2,b=3,c=4;printf(1)a=%d,b=%d,c=%dn,a,b,c);try(a,b,c);printf(4)a=%d,b=%d,c=%dn,a,b,c);,说明:,函数的返回值:当被调用函数在完成一定的功能后,可以将处理的结果返回到调用函数。方式:return语句作用:将表达式的值传给调用函数,并把控制权转向调用函数实现函数的返回,即结束被调用函数的执行,并将控制返回到调用它的函数。格式:return(表达式);,2、函数的返回值,对于不需要提供返回值的函数可以直接用void作为函数类型定义,以表明此函数返回值为”无类型”或”空类型”。例:voidpsch()printf(WuhanUniversityn);main()psch();,3、void函数,函数原型:在定义或调用函数前,对该函数进行声明。作用:将函数名、函数类型及形参个数、类型、顺序等通知编译系统,当函数被调用时,可对实参、形参的类型、个数匹配情况进行检查。格式:类型符函数名(参数类型1,);或:类型符函数名(类型符形参1,);,4、函数原型,例利用变量换数,voidhuanshu1(intx,inty);/*函数原型声明*/main()/*主函数*/inta=5,b=10;printf(1)a=%d,b=%dn,a,b);huanshu1(a,b);printf(4)a=%d,b=%dn,a,b);voidhuanshu1(intx,inty)/*利用变量换数*/intt;printf(2)x=%d,y=%dn,x,y);t=x;x=y;y=t;printf(3)x=%d,y=%dn,x,y);,例判定素数。,#includemath.hintisprime(int);/*函数原型声明*/main()intx=35;if(isprime(x)printf(%d是素数。n,x);elseprintf(%d不是素数。n,x);isprime(inta)inti;for(i=2;i=sqrt(double)a);i+)if(a%i=0)return0;return1;,数组元素做函数实参,遵循”值传送”特性,此时形参为变量。数组名可做实参和形参,传送的是整个数组。在用数组名做函数参数时,实参和形参都应该用数组(或指针变量)。,5、数组作为函数的参数,数组元素作为函数参数举例:,(1),(2),数组名作函数参数时应注意:,1)数组名作函数参数时,应在主调函数和被调函数中分别定义数组。2)实参数组与形参数组的类型必须相同,但大小可以不同。3)形参数组的一维下标可以省略。4)数组名表示的是数组元素的首地址,数组名作函数参数时,传递的是整个数组。实参与形参之间的数据传递是地址传递。,数组名作函数的参数举例:,例利用数组换数,voidhuanshu2(intshuzu,intn);main()/*主函数*/intab2=5,10,i;for(i=0;i2;i+)printf(1)ab%d=%2d,i,abi);huanshu2(ab,2);printf(n);for(i=0;i2;i+)printf(4)ab%d=%2d,i,abi);,voidhuanshu2(intshuzu,intn)intt,i;printf(n);for(i=0;in;i+)printf(2)shuzu%d=%2d,i,shuzui);for(i=0;in-1;i+)t=shuzui;shuzui=shuzui+1;shuzui+1=t;printf(n);for(i=0;in;i+)printf(3)shuzu%d=%2d,i,shuzui);,说明:,ab=,shuzu=2000H,intab2=5,10;,huanshu2(ab,2);,for(i=0;in-1;i+)k=shuzui;shuzui=shuzui+1;shuzui+1=k;,参数传递小结:,格式:函数名(实参列表);说明:实参与形参的个数相等、类型相同、顺序一致,呈一一对应的关系。实参的求值顺序不确定,与所用系统有关。实参应有确定的值。,三、函数的调用,1、函数调用的一般形式,方式1)函数语句:例printf(”);2)函数表达式:例c=2*pow(3.5,6);3)函数参数:例c=2*pow(pow(3.5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论