函数(0002)省公共课一等奖全国赛课获奖课件.pptx
《函数(0002)省公共课一等奖全国赛课获奖课件.pptx》由会员分享,可在线阅读,更多相关《函数(0002)省公共课一等奖全国赛课获奖课件.pptx(109页珍藏版)》请在咨信网上搜索。
1、1第1页1、C语言函数:语言函数:C语语言言函函数数是是子子程程序序总总称称,包包含含函函数数和和过过程程。(有有返返回回值值、无无返返回回值值,教教材材中中称称为为:有有返返回回值函数,无返回值函数)。值函数,无返回值函数)。C语语言言函函数数能能够够分分为为库库函函数数、用用户户自自定定义义函函数数。库库函函数数由由系系统统提提供供,程程序序员员只只需需要要使使用用(调调用用),用户自定义函数需要程序员自己编制。,用户自定义函数需要程序员自己编制。2 2、C C语语言言程程序序由由函函数数组组成成,函函数数是是C C语语言言程程序序基基本单位。本单位。6.1 函数概述2第2页C C语语言言
2、程程序序结结构构如如图图所所表表示示。在在每每个个程程序序中中,主主函函数数mainmain是是必必须须,它它是是全全部部程程序序执执行行起起点点,mainmain函函数数只只调调用用其其它它函函数数,不不能能为为其其它它函函数数调调用用。其其它它函函数数没没有有主主从从关关系系,能能够够相相互互调调用用。全全部部函函数数都都能能够够调调用用库库函函数数。程程序序总总体体功功效效经经过函数调用来实现。过函数调用来实现。3第3页4第4页3、使用函数意义(补充)、使用函数意义(补充)使用函数能使用函数能够够控制任控制任务规务规模模使用函数能使用函数能够够控制控制变变量作用范量作用范围围使用函数,程
3、序开发能够由多人分工协作使用函数,程序开发能够由多人分工协作 使用函数,能够重新利用已经有、调式好、成使用函数,能够重新利用已经有、调式好、成熟程序模块熟程序模块 5第5页4、函数一些概念、函数一些概念(1)主函数、其它函数)主函数、其它函数(2)主主调调函函数数(调调用用其其它它函函数数函函数数)、被被调调函数(被其它函数调用函数)函数(被其它函数调用函数)(3)标准函数(库函数)和用户自定义函数)标准函数(库函数)和用户自定义函数(4)无参函数、有参函数)无参函数、有参函数(5)无返回值函数、有返回值函数)无返回值函数、有返回值函数6第6页例例函数调用简单例子函数调用简单例子#includ
4、evoidmain()voidprintstar();/*对对printstar函数申明函数申明*/voidprint_message();/*对对print_message函数申明函数申明*/printstar();*调用调用printstar函数函数*print_message();/*调用调用print_message函数函数*/printstar();*调用调用printstar函数函数*/7第7页voidprintstar()*定义定义printstar函数函数*printf(*n);voidprint_message()*定义定义print_message函数函数*printf(H
5、owdoyoudo!n);运行情况以下:运行情况以下:*How do you do!How do you do!*8第8页 说明:1.一个程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。对于较大程序,通常将程序内容分别放在若干个源文件中,再由若干源程序文件组成一个C程序。这么便于分别编写、分别编译,提高调试效率。一个源程序文件可认为多个C程序公用。9第9页 说明:说明:2.一个源程序文件由一个或多个函数以及其它相关内容(如命令行、数据定义等)组成。一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位进行编译,而不是以函数为单位进行编译。10第10页说明:说明:3.程序
6、执行是从main函数开始,假如在main函数中调用其它函数,在调用后流程返回到main函数,在main函数中结束整个程序运行。11第11页说明:说明:4.全部函数都是平行,即在定义函数时是分别进行,是相互独立。一个函数并不隶属于另一函数,即函数不能嵌套定义。函数间能够相互调用,但不能调用main函数。main函数是系统调用。12第12页说明:说明:5.从用户使用角度看,函数有两种:标准函数,即库函数。这是由系统提供,用户无须自己定义这些函数,能够直接使用它们。不一样C系统提供库函数数量和功效会有一些不一样,但许多基本函数是共同。用户自己定义函数。用以处理用户专门需要。13第13页6.2.1.6
7、.2.1.定义函数普通形式定义函数普通形式 C语言要求,在程序中用到全部函数,必须“先定义,后使用”。定义函数包含以下几个内容:指定函数名字,方便以后按名调用。指定函数类型,函数值类型。指定函数参数名字和类型,方便在调用函数时向它们传递数据。对无参函数不需要这项。指定函数应该执行什么操作,也就是函数是做什么,即函数功效。这是最主要。6.2 函数定义和调用14第14页 为何要定义函数为何要定义函数 对于C编译系统提供库函数,是由编译系统事先定义好,程序设计者无须自已定义,只需#include命令把相关头文件包含到本文件模块中即可。比如,在程序中若用到数学函数(如sqrt,fabs,sin,cos
8、等),就必须在本文件模块开头写上:#include 15第15页函数应该先定义,后调用函数应该先定义,后调用1、函数定义普通形式、函数定义普通形式函数类型函数类型函数名函数名(函数参数类型函数参数类型1函数参数名函数参数名1,函数函数参数类型参数类型2,函数参数名,函数参数名2)申明部分申明部分执行部分执行部分函数头函数头函数体函数体16第16页2、函函数数头头(首首部部):说说明明了了函函数数类类型型、函函数数名名称及参数。称及参数。(1)函函数数类类型型:函函数数返返回回值值数数据据类类型型,能能够够是是基基本本数数据据类类型型也也能能够够是是结结构构类类型型。假假如如省省略略默默认为认为
9、int,假如不返回值,定义为,假如不返回值,定义为void类型。类型。(2)函函数数名名:给给函函数数取取名名字字,以以后后用用这这个个名名字字调用。函数名由用户命名,命名规则同标识符。调用。函数名由用户命名,命名规则同标识符。(3)(3)函数名后面是参数表,无参函数没有参数函数名后面是参数表,无参函数没有参数传递,但传递,但“()()”号不能省略,这是格式要求。号不能省略,这是格式要求。参数表说明参数类型和形式参数名称,各个形参数表说明参数类型和形式参数名称,各个形式参数用式参数用“,”“,”分隔。分隔。17第17页3、函函数数体体:函函数数首首部部下下用用一一对对括括起起来来部部分分。假假
10、如如函函数数体体内内有有多多个个,最最外外层是函数体范围。层是函数体范围。函函数数体体普普通通包包含含申申明明部部分分、执执行行部部分分两两部分。部分。(1)申申明明部部分分:在在这这部部分分定定义义本本函函数数所所使使用用变变量量和和进进行行相相关关申申明明(如如函函数数申申明)。明)。(2)执执行行部部分分:程程序序段段,由由若若干干条条语语句组成(能够在其中调用其它函数)。句组成(能够在其中调用其它函数)。18第18页4 4、函数定义举例、函数定义举例 怎样定义无参函数怎样定义无参函数定义无参函数普通形式为定义无参函数普通形式为:类型标识符类型标识符函数名函数名()()申明部分申明部分
11、语句部分语句部分 19第19页怎样定义有参函数怎样定义有参函数定义有参函数普通形式为定义有参函数普通形式为:类型标识符类型标识符函数名函数名(形式参数表列)(形式参数表列)申明部分申明部分 语句部分语句部分 比如:比如:(int,int);/*函数体中申明部分*?;return();20第20页 定义空函数定义空函数定义空函数普通形式为定义空函数普通形式为:类型标识符类型标识符函数名函数名()()比如:比如:voiddummy()()主调函数调用空函数时,只表明这里要调用一个函数,但函数本身什么工作也不做等,以后扩充函数功效时补充上。21第21页举例:举例:输入三个整数,求三个整数中最大值输入
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(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);22第22页使用函数使用函数intmax(in
13、t,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;elsem=y;if(zm)m=z;returnm;像像调调用用库库函函数数一样调用一样调用函数定义函数定义23第23页6.2.2 6.2.2 函数调用函数调用 1 1 函数调用普通形式函数调用普通形式函数调用普通形式为函数调用普通形式为:函数名函数名(实参表列)(实参表列)说明说明:1.1.假如是调用无参函数,则“
14、实参表列”能够没有,但括弧不能省略。2.假如实参表列包含多个实参,则各参数间用逗号隔开。实参加形参个数应相等,类型应匹配。实参加形参按次序对应,向形参传递数据。24第24页假如实参表列包含多个实参,对实参求值顺序并不是确定,有系统按自左至右次序求实参值,有系统则按自右至左次序。比如:(,+);若原值为,在 VC+6.0环境下运行结果不是“3,4”,而为“4,4”。因为按自右而左次序,先求+i得4,再向左进行,此时i已是4了。假如想输出3和4,应写成:i=3;j=i+;printf(”%d,%d”,i,j);25第25页 2 2、函数调用方式、函数调用方式函数语句函数语句把函数调用作为一个语句。
15、这时不要求函数带回值,只要求函数完成一定操作。函数表示式函数表示式函数出现在一个表示式中,这种表示式称为函数表示函数表示式式。这时要求函数带回一个确定值以参加表示式运算。比如:*(,);(,);按函数在程序中出现位置来分,能够有按函数在程序中出现位置来分,能够有以下三种函数调用方式:以下三种函数调用方式:26第26页函数参数函数参数函数调用作为一个函数实参。比如比如:m=max(a,max(b,c);其中max(b,c)是一次函数调用,它值作为max另一次调用实参。m值是a、b、c三者中最大者。27第27页 3 3、对被调用函数申明和函数原型、对被调用函数申明和函数原型1.首先被调用函数必须是
16、已经存在函数(是库函数或用户自己定义函数)。但光有这一条件还不够。28第28页3.假如使用用户自己定义函数,而该函数位置在调用它函数(即主调函数)后面,应该在主调函数中对被调用函数作申明。2.假如使用库函数,还应该在本文件开头用#include 命令将调用相关库函数时所需用到信息“包含”到本文件中来。29第29页4、函数申明位置。1)在全部函数定义之前。这是最清楚一个表示方法,便于查找、管理,如程序1所表示。因为在文件头部,第1至3行对f1、f2和f3函数事先作了说明,所以编译系统从申明中已经知道函数相关信息,所以无须在以后各主调函数中再进行申明。2)在全部函数外部(或者说在函数与函数之间)、
17、被调用函数之前,如程序2所表示。3)在调用函数内部说明部分,如程序3所表示。申明函数可与同类变量写在同一行。30第30页例例对被调用函数作申明对被调用函数作申明#include void main()float add(float x,float y);*对被调用函数add申明*float a,b,c;scanf(f,f,a,b);cadd(a,b);printf(sum is f n,c);float add(float,float)*函数首部*float;/*函数体*/z;return(z);运行情况以下:3.6,6.5Sumis10.10000031第31页函数原型普通形式为函数原型普通
18、形式为:1.1.函数类型函数类型 函数名函数名(参数类型参数类型1 1,参数类型,参数类型2)2);2.2.函数类型函数类型 函数名函数名(参数类型参数类型1 1,参数名,参数名1 1,参数类型,参数类型2 2,参数名,参数名2)2);申明作用是把函数名、函数参数个数和参数类型等信息通知编译系统,方便在碰到函数调用时,编译系统能正确识别函数并检验调用是否正当。32第32页注意:注意:函数“定义”和“申明”不是一回事。函数定义是指对函数功效确实立函数功效确实立,包含指定函数名,函数值类型、形参及其类型、函数体函数体等,它是一个完整、独立函数单位。函数申明作用则是把函数名字、函数类型以及形参类型、
19、个数和次序通知编译系统,方便在调用该函数时系统按此进行对照检验。它不包含函数体函数体。33第33页说明:说明:(1)假如被调用函数定义出现在主调函数之前,能够无须加以申明。(2)假如已在文件开头(在全部函数之前),已对本文件中所调用函数进行了申明,则在各函数中无须对其所调用函数再作申明。34第34页例例(对上例改写)对上例改写)#include float add(float,float)*函数首部*float;z;return(z);void main()/*无须再对add函数作申明*/float a,b,c;scanf(f,f,a,b);cadd(a,b);printf(sum is f
20、n,c);35第35页编写一函数,求xn次方值,其中n是整数 分析:(1)求任意n个x乘积,可把x和n作为函数形参,数据从主调函数里传递,以增加程序灵活性,其程序流程图如图6-2所表示。(2)用循环结构来实现该算法。36第36页形参x,n取得值i=0,p=1.0定义变量inp=p*x;i+返回pNY37第37页#includedouble power(double,int);/*函数申明*/main()/*主调用函数*/double x,f;int n;printf(Enter two numbers:x,n!n);scanf(%lf,%d,&x,&n);f=power(x,n);/*函数调用
21、*/printf(Value=%6.2lfn,f);38第38页/*函数定义*/double power(double x,int n)/*函数头*/*函数体*/int i=0;double p=1.0;while(in)p=p*x;i+;return(p);注意:x,f定义为double类型,它格式控制符为%lf,不要写成%f,以防止犯错。39第39页形式参数:函数名后面括弧中变量名称为“形式参数”(简称“形参形参”);实际参数:主调函数中调用一个函数时,函数名后面括弧中参数(能够是一个表示式)称为“实际参数”(简称“实参实参”);函数返回值:return后面括弧中值作为函数带回值(称函数返
22、回值函数返回值)。6.2.3函数参数和函数值40第40页 主调函数和被调用函数之间有数据传递关系。在不一样函数之间传递数据,能够使用方法有:参数:经过形式参数和实际参数返回值:用return语句返回计算结果全局变量:外部变量41第41页例例输输入入两两个个整整数数,要要求求用用一一个个函函数数求求出出其其中中大大者者,并并在主函数中输出此值。在主函数中输出此值。#include void()int max(int,int);/*对函数申明*/int,;scanf(,);(,);printf(,);42第42页int max(int,int)*定义有参函数max*int;?;return();运
23、行情况以下:运行情况以下:,43第43页经过函数调用,可使两个函数中数据发生联络。44第44页关于形参加实参说明:关于形参加实参说明:1.1.在定义函数中指定形参,在未出现函数调用时,它们并不占内存中存放单元。只有在发生函数调用时,函数max中形参才被分配内存单元。在调用结束后,形参所占内存单元也被释放。2.2.实参能够是常量、变量或表示式,比如:比如:max(,);但要求它们有确定值。在调用时将实参值赋给形参。45第45页3.3.在被定义函数中,必须指定形参类型。4.4.实参加形参类型应相同或赋值兼容。5.5.实参向形参数据传递是单向“值传递”,只能由实参传给形参,而不能由形参传回来给实参。
24、在调用函数时,给形参分配存放单元,并将实参对应值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。46第46页2 2 函数返回值函数返回值函数返回值函数返回值是经过函数调用使主调函数得到确实定值。比如比如:例8.中,max(,)值是,max(,)值是5。赋值语句将这个函数值赋给变量。47第47页说明:说明:1.函数返回值是经过函数中return语句取得。一个函数中能够有一个以上return语句,执行到哪一个return语句,哪一个语句起作用。return语句后面括弧也能够不要比如比如:“return;”等价于等价于“return();();”return后面值能够是一个表示式。
25、比如比如:(int,int)return(?:););48第48页2.函数返回值应该属于某一个确定类型,在定义函数时指定函数返回值类型。比如比如:下面是下面是3个函数首行:个函数首行:int max(float,float)/*函数值为整型*/char letter(char c1,char c2)/*函数值为字符型*/double min(int,int)/*函数值为双精度型*/注意:注意:凡不加类型说明函数,自动按整型处理。49第49页3.在定义函数时指定函数类型普通应该和return语句中表示式类型一致。假如函数值类型和return语句中表示式值不一致,则以函数类型为准。对数值型数据,能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 0002 公共课 一等奖 全国 获奖 课件
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。