清华谭浩强C语言函数省公共课一等奖全国赛课获奖课件.pptx
《清华谭浩强C语言函数省公共课一等奖全国赛课获奖课件.pptx》由会员分享,可在线阅读,更多相关《清华谭浩强C语言函数省公共课一等奖全国赛课获奖课件.pptx(95页珍藏版)》请在咨信网上搜索。
1、第第8章章函函数数第1页8.1 概述C语语言言是是经经过过函函数数来来实实现现模模块块化化程程序序设设计计。一一个个较较大大程程序序应应分分为为若若干干程程序序模模块块,每每个个模模块块实实现现一一个个特特定定功功效效,这这个个模模块块称称为为子子程程序序。C子子程程序序是经过是经过函数函数实现,函数是实现,函数是C语言程序语言程序基本单位基本单位。第2页函数组成源程序是由函数组成。函数是源程序基本模源程序是由函数组成。函数是源程序基本模块,经过对函数模块调用实现特定功块,经过对函数模块调用实现特定功能。能。实用程序往往包含一实用程序往往包含一个主函数个主函数main()和和若干其它若干其它函
2、数函数。其中主函数。其中主函数main()是是必须必须,它是全部函数,它是全部函数执行起点执行起点。由。由主函数调用其它函数主函数调用其它函数,其它函数也,其它函数也能够能够相互调用相互调用,同一函数能够被,同一函数能够被一个或多个一个或多个函数函数调用任意屡次。调用示意图以下:调用任意屡次。调用示意图以下:第3页 程序全部工作都是由各式各样函数完成,所以也把语言称为函数式语言。f11()f11()f31()f1()f11();f2()f11();f22();main()f1();f2();第4页程序开发中使用函数优点1 1)使用函数能)使用函数能够够控制控制任任务规务规模模2 2)使用函数能
3、)使用函数能够够控制控制变变量作用范量作用范围围3 3)使用函数,程序开发能够由)使用函数,程序开发能够由多人分工协作多人分工协作 4 4)使用函数,能够)使用函数,能够重新利用重新利用已经有、调式好、已经有、调式好、成熟程序模块成熟程序模块 5)函数模块函数模块相对独立,功效单一相对独立,功效单一,可混合编写也,可混合编写也可独立编写调试。可独立编写调试。第5页函数一些说明1)一个)一个C程序由多个程序模块组成,每个模块作为一个程序由多个程序模块组成,每个模块作为一个源源程序文件,程序文件,多个源程序文件组成一个多个源程序文件组成一个C程序,这么程序,这么便于便于分分别编写分别编译,提升调试
4、效率,一个源程序文件可为多别编写分别编译,提升调试效率,一个源程序文件可为多个个C程序程序共用共用。2)一个源程序文件由)一个源程序文件由一个或多个函数一个或多个函数及其相关内容(如数及其相关内容(如数据定义等)组成,一个源程序文件是一个据定义等)组成,一个源程序文件是一个基本编译单位。基本编译单位。3)C程序执行从主函数程序执行从主函数main()开始(称为()开始(称为主调函数主调函数),),能够调用其它函数(称为能够调用其它函数(称为被调用函数被调用函数),调用流程),调用流程返回返回main(),最终函数在(),最终函数在main()中()中结束结束。4)全部函数都是)全部函数都是平行
5、平行,在定义时候是,在定义时候是分别进行分别进行,相互,相互独立独立,无隶属无隶属关系,关系,不可嵌套不可嵌套定义。函数间可相互调用,但定义。函数间可相互调用,但不能不能调用主函数调用主函数,主函数只能由系统调用。,主函数只能由系统调用。第6页函数分类1.从用户使用角度从用户使用角度1)标准函数()标准函数(库函数库函数),由系统提供,用户无须),由系统提供,用户无须自定义可直接使用,注意:不一样自定义可直接使用,注意:不一样C编译系统提编译系统提供库函数可能有些不一样供库函数可能有些不一样2)用户)用户自定义自定义函数,用来处理用户专门需要。函数,用来处理用户专门需要。2.从函数形式从函数形
6、式1)无参函数无参函数。在调用函数时,。在调用函数时,main不不向被调用向被调用函数传递数据,只用来执行一组操作。函数传递数据,只用来执行一组操作。2)有参函数,主调函数在调用被调用函数时,有参函数,主调函数在调用被调用函数时,经过参数向其经过参数向其传递数据传递数据,普通情况下,执行被调,普通情况下,执行被调用函数时,得到用函数时,得到一个函数值一个函数值,供主调函数使用。,供主调函数使用。第7页8.2 函数定义普通形式函数应该先定义,后调用函数应该先定义,后调用(1)无参函数普通形式无参函数普通形式函数类型函数类型函数名函数名()说明语句部分;说明语句部分;可执行语句部分;可执行语句部分
7、;无参函数普通不需要返回函数值,函数类型无参函数普通不需要返回函数值,函数类型void类型类型(空类型)(空类型)第8页2)有参函数普通形式)有参函数普通形式函数类型函数类型函数名函数名(形参表列形参表列)说明语句部分;说明语句部分;可执行语句部分;可执行语句部分;例:例:intmax(x,y)intx,y;/形式参数说明形式参数说明/intz;/函数体中说明部分函数体中说明部分/z=xy?x:y;return(z);这两行能够写成一行:这两行能够写成一行:intmax(intx,inty)第9页3“空函数空函数”类型说明符类型说明符函数名函数名()“空函数空函数”什么操作也不做什么操作也不做
8、。其作用是在此处。其作用是在此处留留一函数位置一函数位置,方便未来扩充功效之用。函数名也,方便未来扩充功效之用。函数名也在未来换取实际函数名。在未来换取实际函数名。第10页函数定义一些说明1.函函数数头头(首首部部):说说明明了了函函数数类类型型、函函数数名名称称及及参数。参数。(1)函函数数类类型型:函函数数返返回回值值数数据据类类型型,能能够够是是基基本本数数据据类类型型也也能能够够是是结结构构类类型型。假假如如省省略略默默认认为为int,假如不返回值,定义为,假如不返回值,定义为void类型。类型。(2)函函数数名名:给给函函数数取取名名字字,以以后后用用这这个个名名字字调调用。函数名由
9、用户命名,命名规则同标识符。用。函数名由用户命名,命名规则同标识符。(3)(3)函数名后面是参数表,无参函数没有参数传函数名后面是参数表,无参函数没有参数传递,但递,但“()()”号不能省略,这是格式要求。号不能省略,这是格式要求。参参数表说明参数类型和形式参数名称,各个形式参数表说明参数类型和形式参数名称,各个形式参数用数用“,”分隔。分隔。第11页2.函函数数体体:函函数数首首部部下下用用一一对对括括起起来来部部分分。假假如如函函数数体体内内有有多多个个,最最外外层层是是函函数数体体范围。范围。函函数数体体普普通通包包含含申申明明部部分分、执执行行部部分分两两部部分。分。1)申申明明部部分
10、分:在在这这部部分分定定义义本本函函数数所所使使用用变变量和进行相关申明(如函数申明)。量和进行相关申明(如函数申明)。2)执执行行部部分分:程程序序段段,由由若若干干条条语语句句组组成成(能够在其中调用其它函数)。(能够在其中调用其它函数)。第12页例:输入三个整数,求三个整数中最大值例:输入三个整数,求三个整数中最大值不使用函数不使用函数(除除mainmain外外)main()main()int n1,n2,n3,nmax;int n1,n2,n3,nmax;scanf(“%d%d%d”,&n1,&n2,&n3);scanf(“%d%d%d”,&n1,&n2,&n3);if(n1n2)if
11、(n1n2)nmax=n1;nmax=n1;else nmax=n2;else nmax=n2;if(n3max)if(n3max)max=n3;max=n3;printf(“max=%dn”printf(“max=%dn”,nmax);nmax);第13页使用函数使用函数intmax(int,int,int);/*函数申明函数申明*/main()intn1,n2,n3,nmax;scanf(“%d%d%d”,&n1,&n2,&n3);nmax=max(n1,n2,n3);printf(“max=%dn“,nmax);intmax(intx,inty,intz)intm;if(xy)m=x;e
12、lsem=y;if(zm)m=z;returnm;像像调调用用库库函函数数一样调用一样调用函数定义函数定义第14页8.3函数参数和函数值函数参数和函数值8.3.1形式参数与实际参数形式参数与实际参数在调用函数时,大多情况下,主调与被调函在调用函数时,大多情况下,主调与被调函数间有数间有数据传递关系数据传递关系,这就是有参函数。在定义,这就是有参函数。在定义函数时,函数名后面括号中变量名称为函数时,函数名后面括号中变量名称为“形形式式参参数数”,在主调函数中调用一个函数时,函数名后,在主调函数中调用一个函数时,函数名后面括号中参数(能够是表示式)称为面括号中参数(能够是表示式)称为“实实际际参参
13、数数”。发生函数调用时,调用函数把发生函数调用时,调用函数把实参值实参值复制一复制一份,份,传送给传送给被调用函数被调用函数形参形参,从而实现调用函数,从而实现调用函数向被调用函数向被调用函数数据传送数据传送。第15页例例从键盘输入两个数,输出其中较大一个。从键盘输入两个数,输出其中较大一个。main()inta,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);/a,b为实际参数为实际参数/printf(“Maxis%d”,c);max(x,y)/x,y为形式参数为形式参数/intx,y;intz;z=xy?x:y;return(z);第16页说明:说明:1)形参变量在
14、被调用前形参变量在被调用前不占用存放单元不占用存放单元;在被调用结束;在被调用结束后,后,形参所占存放单元亦被形参所占存放单元亦被释放释放。所以,所以,形参只有在该函数内形参只有在该函数内有效。有效。调用结束,返回调用函数后,则不能再使用该形参调用结束,返回调用函数后,则不能再使用该形参变量。变量。2)实实参参能能够够是是常常量量、变变量量、表表示示式式、函函数数等等。不不论论实实参参是是何何种种类类型型量量,在在进进行行函函数数调调用用时时,它它们们都都必必须须含含有有确确定定值值,方方便便把把这这些些值值传传送送给给形形参参。所所以以,应应预预先先用用赋赋值值、输输入入等等方法,方法,使实
15、参取得确定使实参取得确定值。值。3)实实参参对对形形参参数数据据传传送送是是单单向向,即即只只能能把把实实参参值值传传送送给给形形参,而不能把形参值反向地传送给实参。参,而不能把形参值反向地传送给实参。4)实参和形参)实参和形参占用不一样内存单元占用不一样内存单元,即使同名也互不影响,即使同名也互不影响5)在在被被定定义义函函数数中中,必必须须指指定定形形参参类类型型。实实参参和和形形参参类类型型应相同或赋值相容。应相同或赋值相容。第17页main()int a=3,b=5;void swap(int,int);swap(a,b);printf(“a=%d,b=%dn”,a,b);void s
16、wap(int x,int y)int temp;temp=x;x=y;y=temp;printf(“x=%d,y=%d n”,x,y);是按值传递按址传递放在指针里面讲。传递值35ab35xy 3tempMain()函数:调用Swap函数第18页8.3.2 函数返回值通常,希望经过函数调用使通常,希望经过函数调用使主调函数主调函数得到一得到一个确定值,这就是函数个确定值,这就是函数返回值。返回值。说明以下:说明以下:1)函数返回值是经过)函数返回值是经过return语句语句取得。当不需返取得。当不需返回函数值时,可省去回函数值时,可省去return语句。语句。2)return语句后面能够语句
17、后面能够有括号,也能够没有。有括号,也能够没有。如:如:returnz;return(z);3)return语句后面能够是变量,也能够是表示式。语句后面能够是变量,也能够是表示式。如:如:return(xy?x:y);第19页4)return语句返回值类型应与该函数语句返回值类型应与该函数类型一类型一致。致。否否则以函数类型为准。则以函数类型为准。5)若函数中)若函数中没有没有return语句语句,则该函数被调用,则该函数被调用后也会后也会带带回不确定值回不确定值。为了明确表示不需要函。为了明确表示不需要函数返回值,可数返回值,可以用以用“void”定义函数为定义函数为“无类无类型型”。凡不需
18、要返回值函数,普通均定义为。凡不需要返回值函数,普通均定义为“void”类型。类型。6)一个函数能够)一个函数能够有一个以上有一个以上return语句,执行到语句,执行到哪个哪个return语句,哪个语句,哪个return语句起作用。语句起作用。第20页8.4 函数调用在在程程序序中中,是是经经过过对对函函数数调调用用来来执执行行函函数数体体,其其过过程程与与其其它语言子程序调用相同。它语言子程序调用相同。语言中,函数调用普通形式为:语言中,函数调用普通形式为:函数名函数名(实际参数表实际参数表)说明:说明:1)对于无参函数,尽管没有)对于无参函数,尽管没有“实参表实参表”,但也,但也不得省略
19、不得省略括括号。号。2)“实参表实参表”中参数之间用中参数之间用逗号逗号分开。分开。3)实参加形参之间个数及类型必须)实参加形参之间个数及类型必须一一对应。一一对应。4)对实参求值次序是自左至右还是自右至左)对实参求值次序是自左至右还是自右至左,视详细系统视详细系统而定。而定。TurboC和和MSC是按是按自右至左自右至左次序求值。见次序求值。见P162例例8.4第21页8.4.2 函数调用方式按照函数在程序中出现位置,能够有以下三种调用方式:1)函数语句:C语言中函数能够只进行一些操作而不返回函语言中函数能够只进行一些操作而不返回函数值,这时函数调用可作为一条独立语句。如数值,这时函数调用可
20、作为一条独立语句。如printf(“Cpragram”)gets(s););2)函数表示式:函数作为表示式一项,出现在表示式中,函数作为表示式一项,出现在表示式中,以以函数返回值参加表示式运算函数返回值参加表示式运算。这种方式要求函数是。这种方式要求函数是有返有返回值回值。如:。如:c=2 max(a,b);3)函数参数:函数作为另一个函数调用函数作为另一个函数调用实际参数实际参数出现。这出现。这种情况是把该函数返回值作为实参进行传送,所以要求该种情况是把该函数返回值作为实参进行传送,所以要求该函数必须函数必须是有返回值是有返回值。如:。如:m=max(max(a,b),c);第22页8.4.
21、3 对被调用函数申明和函数原型对被调用函数申明对被调用函数申明在一个函数被另一个函数调用时,须具备以下条在一个函数被另一个函数调用时,须具备以下条件:件:1)被调用函数已存在)被调用函数已存在2)假如被调函数为库函数,则应在文件开头)假如被调函数为库函数,则应在文件开头用用“#include”命令命令申明申明对应对应“头文头文件件”。如:。如:#include“stdio.h”#include“math.h”3)假如被调函数为假如被调函数为自定义函数自定义函数且其且其定义在主调函定义在主调函数定义之后数定义之后,则应在主调函数中说明其类型(即,则应在主调函数中说明其类型(即对被调用函数进行申明
22、)。对被调用函数进行申明)。第23页函数申明作用是把函数名、函数参数个数函数申明作用是把函数名、函数参数个数和参数类型等信息和参数类型等信息通知编译系统通知编译系统,方便在调用时,方便在调用时,编译系统能正确识别函数并检验调用编译系统能正确识别函数并检验调用是否正当是否正当。函。函数申明又称函数原型。格式以下:数申明又称函数原型。格式以下:函数类型函数类型函数名(参数类型函数名(参数类型1,参数类型,参数类型2,参,参数类型数类型n);函数类型函数类型函数名(参数类型函数名(参数类型1,参数名,参数名1,参数类型,参数类型2,参数名,参数名2,参数类型,参数类型n,参数名,参数名n);假如不申
23、明,系统无法在调用时对函数调用正假如不申明,系统无法在调用时对函数调用正确性进行检验,轻易犯错。确性进行检验,轻易犯错。第24页注意注意:函数定义和申明:函数定义和申明不是一回事不是一回事。定义是。定义是对函数功效确实对函数功效确实立立,包含指定函数名、函数值类型、形参及其类型、函数,包含指定函数名、函数值类型、形参及其类型、函数体等,它是一个完整、独立体等,它是一个完整、独立函数单位函数单位。而函数申明则是把。而函数申明则是把函数名字、函数类型以及形参类型、个数和次序等函数名字、函数类型以及形参类型、个数和次序等通知编通知编译系统译系统方便在调用时进行方便在调用时进行对照检验对照检验。如:m
24、ain()double new_style(int,double);/*函数申明*/Double new_style(int a,double x)/*函数定义*/第25页说明:1)类型标识符类型标识符被调函数名被调函数名();这种申明这种申明形式也是正当,但不提倡。形式也是正当,但不提倡。2)假如被调函数为自定义函数且其定义)假如被调函数为自定义函数且其定义在主调函数定义之前,则在主调函数中可在主调函数定义之前,则在主调函数中可无须说明其类型。因为编译程序已知道其无须说明其类型。因为编译程序已知道其类型。类型。3)假如被调函数值是)假如被调函数值是整型或字符型整型或字符型,可,可无须申明类型
25、无须申明类型,系统自动按整型说明。,系统自动按整型说明。第26页4)假如在)假如在全部被调函数定义之前、在文件开全部被调函数定义之前、在文件开头、在函数外部头、在函数外部已对被调函数作了类型说已对被调函数作了类型说明,则在各主调函数中可无须说明其类型。明,则在各主调函数中可无须说明其类型。见见P166例。例。charletter();floatf();inti();main()一开始就将全部要被一开始就将全部要被调用函数作出申明调用函数作出申明/主调函数中无须说明它所调用函数类型主调函数中无须说明它所调用函数类型/第27页8.5 函数嵌套调用函函数数不不允允许许嵌嵌套套定定义义,不不过过允允许
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 清华 谭浩强 语言 函数 公共课 一等奖 全国 获奖 课件
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。