ImageVerifierCode 换一换
格式:PPTX , 页数:66 ,大小:322.24KB ,
资源ID:3468999      下载积分:16 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/3468999.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(文科C语言函数省公共课一等奖全国赛课获奖课件.pptx)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

文科C语言函数省公共课一等奖全国赛课获奖课件.pptx

1、第九章第1页l l 本章关键点函数概念函数概念函数定义与调用函数定义与调用函数递归调用函数递归调用 变量作用域变量作用域函数作用域函数作用域第2页l l 主要内容 9.1 9.1 概述概述 9.9.函数定义普通形式函数定义普通形式 9.9.函数参数和函数值函数参数和函数值 9.9.函数调用函数调用 9.9.函数嵌套调用函数嵌套调用 9.9.函数递归调用函数递归调用 9.9.数组作为函数参数数组作为函数参数 9.8 9.8 局部变量和全局变量局部变量和全局变量 第3页 9.1 概述 一个程序可由一个主函数和若干个其它函数组成。一个较大程序可分为若干个程序模块,每一个模块用来实现一个特定功效。在高

2、级语言中用子程序实现模块功效。子程序由函数来完成。函数间调用关系:由主函数调用其它函数,其它函数也能够相互调用。同一个函数能够被一个或多个函数调用任意屡次。第4页第5页例例8.18.1先举一个函数调用简单例子先举一个函数调用简单例子#include void main()void printstar();/*对对printstar函数申明函数申明*/void print_message();/*对对print_message函数申明函数申明*/printstar();*调用调用printstar函数函数*print_message();/*调用调用print_message函数函数*/prin

3、tstar();*调用调用printstar函数函数*/第6页void printstar()*定义定义printstar函数函数*printf(*n);void print_message()*定义定义print_message函数函数*printf(How do you do!n);运行情况以下:运行情况以下:*How do you do!How do you do!*第7页 说明:(1)一个程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。对于较大程序,通常将程序内容分别放在若干个源文件中,再由若干源程序文件组成一个C程序。这么便于分别编写、分别编译,提高调试效率。一个源程

4、序文件可认为多个C程序公用。第8页(2)一个源程序文件由一个或多个函数以及其它相关内容(如命令行、数据定义等)组成。一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位进行编译,而不是以函数为单位进行编译。(3)程序执行是从main函数开始,假如在main函数中调用其它函数,在调用后流程返回到main函数,在main函数中结束整个程序运行。第9页(4)全部函数都是平行,即在定义函数时是分别进行,是相互独立。一个函数并不隶属于另一函数,即函数不能嵌套定义。函数间能够相互调用,但不能调用main函数。main函数是系统调用。第10页(5)从用户使用角度看,函数有两种:标准函数,即库函数。

5、这是由系统提供,用户无须自己定义这些函数,能够直接使用它们。不一样C系统提供库函数数量和功效会有一些不一样,但许多基本函数是共同。用户自己定义函数。用以处理用户专门需要。第11页(6)从函数形式看,函数分两类:无参函数。无参函数普通用来执行指定一组操作。在调用无参函数时,主调函数不向被调用函数传递数据。有参函数。主调函数在调用被调用函数时,经过参数向被调用函数传递数据。第12页 9.9.函数定义普通形式函数定义普通形式 9.2.1 9.2.1 无参函数定义普通形式无参函数定义普通形式 定义无参函数普通形式为定义无参函数普通形式为:类型标识符类型标识符函数名函数名()()申明部分申明部分 语句部

6、分语句部分 第13页 9.2.2 9.2.2 有参函数定义普通形式有参函数定义普通形式 定义有参函数普通形式为定义有参函数普通形式为:类型标识符类型标识符函数名函数名(形式参数表列)(形式参数表列)申明部分申明部分 语句部分语句部分 比如:比如:(int,int);/*函数体中申明部分*?;return();第14页 9.2.3 9.2.3 空函数空函数 定义空函数普通形式为定义空函数普通形式为:类型标识符类型标识符函数名函数名()()比如:比如:()()主调函数调用空函数时,只表明这里要调用一个函数,但函数本身什么工作也不做等,以后扩充函数功效时补充上。第15页 9.3 9.3 函数参数和函

7、数值函数参数和函数值 9.3.1 9.3.1 9.3.1 9.3.1 形式参数和实际参数形式参数和实际参数 形式参数:函数名后面括号中变量名称为“形式参数”(简称“形参形参”)。实际参数:主调函数中调用一个函数时,函数名后面括号中参数(能够是一个表示式)称为“实际参数”(简称“实参实参”)。函数返回值:return后面括号中值作为函数带回值(称函数返回值函数返回值)。第16页 主调函数和被调用函数之间有数据传递关系。在不一样函数之间传递数据,能够使用方法有:参数:经过形式参数和实际参数返回值:用return语句返回计算结果全局变量:外部变量第17页例例8.调用函数时数据传递调用函数时数据传递#

8、include int max(int,int);/*对函数申明*/void()int,;scanf(,);(,);printf(,);第18页int max(int,int)*定义有参函数max*int;?;return();运行情况以下:运行情况以下:,第19页经过函数调用,可使两个函数中数据发生联络。第20页关于形参加实参说明:关于形参加实参说明:(1 1)在定义函数中指定形参,在未出现函数调用时,它们并不占内存中存放单元。只有在发生函数调用时,函数max中形参才被分配内存单元。在调用结束后,形参所占内存单元也被释放。(2 2)实参能够是常量、变量或表示式,比如:比如:max(,);但要

9、求它们有确定值。在调用时将实参值赋给形参。第21页(3 3)在被定义函数中,必须指定形参类型。(4 4)实参加形参类型应相同或赋值兼容。(5 5)值传递:实参向形参数据传递是单向“值传递”,只能由实参传给形参,而不能由形参传回来给实参。在调用函数时,给形参分配存放单元,并将实参对应值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。第22页 9.3.2 9.3.2 函数返回值函数返回值 函数返回值函数返回值是经过函数调用使主调函数得到确实定值。比如比如:例8.中,max(,)值是,max(,)值是5。赋值语句将这个函数值赋给变量。第23页说明:说明:(1)函数返回值是经过函数中

10、return语句取得。一个函数中能够有一个以上return语句,执行到哪一个return语句,哪一个语句起作用。return语句后面括弧也能够不要比如比如:“return;”等价于等价于“return();();”return后面值能够是一个表示式。比如比如:(int,int)return(?:););第24页(2)函数返回值应该属于某一个确定类型,在定义函数时指定函数返回值类型。比如比如:下面是下面是3个函数首行:个函数首行:int max(float,float)/*函数值为整型*/char letter(char c1,char c2)/*函数值为字符型*/double min(int,

11、int)/*函数值为双精度型*/注意:注意:凡不加类型说明函数,自动按整型处理。第25页(3)在定义函数时指定函数类型普通应该和return语句中表示式类型一致。假如函数值类型和return语句中表示式值不一致,则以函数类型为准。对数值型数据,能够自动进行类型转换。即函数类型决定返回值类型。(4)对于不带回值函数,应该用“void”定义函数为“无类型”(或称“空类型”)。此时在函数体中不得出现return语句。第26页例例 8.8.返回值类型与函数类型不一样返回值类型与函数类型不一样#include void main()int(float,float);float,;int;scanf(,)

12、;(,);printf(,);int max(float,float)float;/*z为实型变量*/?;return();运行情况以下:,Max is 第27页 9.9.函数调用函数调用 9.9.1.1 函数调用普通形式函数调用普通形式函数调用普通形式为函数调用普通形式为:函数名(实参表列)函数名(实参表列)说明说明:(1 1)假如是调用无参函数,则“实参表列”能够没有,但括弧不能省略。第28页(2 2)假如实参表列包含多个实参,则各参数间用逗号隔开。实参加形参个数应相等,类型应匹配。实参加形参按次序对应,一一传递数据。第29页 9.4.2 9.4.2 函数调用方式函数调用方式函数语句函数语

13、句把函数调用作为一个语句。这时不要求函数带回值,只要求函数完成一定操作。函数表示式函数表示式函数出现在一个表示式中,这种表示式称为函数表示函数表示式式。这时要求函数带回一个确定值以参加表示式运算。比如:*(,);(,);按按函函数数在在程程序序中中出出现现位位置置来来分分,能能够够有有以以下下三种函数调用方式:三种函数调用方式:第30页函数参数函数参数函数调用作为一个函数实参。比如比如:m=max(a,max(b,c);其中max(b,c)是一次函数调用,它值作为max另一次调用实参。m值是a、b、c三者中最大者。第31页9.4.3 9.4.3 对被调用函数申明和函数原型对被调用函数申明和函数

14、原型1.首先被调用函数必须是已经存在函数(是库函数或用户自己定义函数)。但光有这一条件还不够。第32页3.假如使用用户自己定义函数,而该函数位置在调用它函数(即主调函数)后面,应该在主调函数中对被调用函数作申明。2.假如使用库函数,还应该在本文件开头用#include 命令将调用相关库函数时所需用到信息“包含”到本文件中来。第33页函数原型普通形式为函数原型普通形式为:1.函数类型 函数名(参数类型1,参数类型2);2.函数类型 函数名(参数类型1,参数名1,参数类型2,参数名2);申明作用是把函数名、函数参数个数和参数类型等信息通知编译系统,方便在碰到函数调用时,编译系统能正确识别函数并检验

15、调用是否正当。第34页注意:注意:函数“定义”和“申明”区分:l 函数定义是指对函数功效确实立,包含指定函数名,函数值类型、形参及其类型、函数体等,它是一个完整、独立函数单位。l 函数申明作用则是把函数名字、函数类型以及形参类型、个数和次序通知编译系统,方便在调用该函数时系统按此进行对照检验。第35页例例9.对被调用函数作申明对被调用函数作申明#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

16、(float,float)*函数首部*float;/*函数体*/z;return(z);第36页例9 对被调用函数作申明#include float add(float,float)*函数首部*float;/*函数体*/z;return(z);void main()float a,b,c;scanf(f,f,a,b);cadd(a,b);printf(sum is f n,c);第37页 9.9.函数嵌套调用函数嵌套调用嵌套定义就是在定义一个函数时,其函数体内又包含另一个函数完整定义。第38页 9.6 9.6 函数递归调用函数递归调用 在调用一个函数过程中又出现直接或间接地调用该函数本身,称为

17、函数递归调用。语言特点之一就在于允许函数递归调用。比如:比如:int f(int),;();return(*);第39页例例 9.7:9.7:有个人坐在一起,问第个人多少岁?他说比第个人大岁。问第个人岁数,他说比第个人大岁。问第个人,又说比第个人大岁。问第个人,说比第个人大岁。最终问第个人,他说是岁。请问第个人多大。age(5)=age(4)+2age(4)=age(3)+2age(3)=age(2)+2age(2)=age(1)+2age(1)=10用数学公式表述以下:age(n)=10()age(n-1)+2()第40页能够用一个函数来描述上述递归过程:能够用一个函数来描述上述递归过程:i

18、nt age(int)*求年纪递归函数*int;*用作存放函数返回值变量*if();else ();return();运行结果以下:运行结果以下:用一个主函数调用age函数,求得第5人年纪。#include void main()printf(,age();第41页例例9.9.用递归方法求!用递归方法求!求!也能够用递归方法,即!等于!,而!。可用下面递归公式表示:!(,)()!()第42页 9.7 9.7 数组作为函数参数数组作为函数参数 9.7.1 9.7.1 数组元素作函数实参数组元素作函数实参 因为实参能够是表示式,而数组元素能够是表示式组成部分,所以数组元素能够作为函数实参,与用变量

19、作实参一样,是单向传递,即“值传送”方式。第43页例例 8.108.10 有两个数组和,各有个元素,将它们对应地逐一相比(即与比,与比)。假如数组中元素大于数组中对应元素数目多于b数组中元素大于a数组中对应 元 素 数 目(比 如,a i b i 6次,biai3次,其中i每次为不一样值),则认为a数组大于b数组,并分别统计出两个数组对应元素大于、等于、小于次数。第44页#include void main()int large(int x,int y);/*函数申明*/int 10,10,,;printf(enter array a);for(;)scanf(,);printf();prin

20、tf(enter array);for(;)scanf(,);printf();for(;)if(large(i,i)=);else if(large(i,i)=)=+;else;第45页printf(aibi%d timesnai=bi%d timesnaik)printf(array a is larger than array bn);else if(nk)printf(array a is smaller than array bn);else printf(array is equal to array bn);large(int,int)int;if();else if()flag

21、;else flag;return(flag);第46页运行情况以下:运行情况以下:enter array a:5 3 8 9 1 3 5 6 0 4 array a is smaller thann array b第47页 9.7.2 9.7.2 数组名作函数参数数组名作函数参数 用数组名作函数参数时,此时形参应该用数组名或用指针变量。例例9.11 有一个一维数组score,内放10个学生成绩,求平均成绩。第48页#include void main()float average(float array10);/*函数申明*/float score10,aver;int;printf(inp

22、ut scores:);for(;)scanf(,score);printf();averaverage(score);printf(average score is.n,aver);第49页float average(float array10)int;float aver,;for (;);aver sum;return(aver);运行情况以下:运行情况以下:input scores:.5 .5 average score is 83.40 第50页例例 9.9.形参数组不定义长度形参数组不定义长度#include void main()float average(float ,int)

23、float score_15,.,;float score_210=67.5,89.5,99,6.5,77,89.5,76.5,54,60,99.5;printf(“the average of class A is%6.2fn”,average(score_1,5);printf(“the average of class B is%6.2fn”,average(score_2,10);第51页float average(float ,int)int;float aver,;for(;)sumsumarray;aversum;return(aver);运行结果以下:运行结果以下:the av

24、erage of class A is 80.40The average of class is 78.20第52页 9.7.3.9.7.3.多维数组名作函数参数多维数组名作函数参数程序:程序:#include void main()max_value(int 3 4);int a34=1,3,5,7,2,4,6,8,15,17,34,12;printf(max value is,max_value(a));用多维数组名作为函数实参和形参。在被调函数中对形参数组定义时能够指定每一维大小。第53页max_value(int array 34)int,max;max=;for(=;)for(;if

25、(array)max=array;return(max);运行结果以下:运行结果以下:Max value is 34第54页 9.89.8局部变量和全局变量局部变量和全局变量 9.8.19.8.1局部变量局部变量内部变量:在一个函数内部定义变量称内部变量。它只在本函数范围内有效,即:只有在本函数内才能使用这些变量,故称为“局部变量”。第55页例:float f1(int a)/*函数f1*/int b,c;/*a、b、c有效*/char f2(int x,int y)/*函数f2*/int i,j;/*x、y、i、j有效*/void main()/*主函数*/int m,n;/*m、n有效*/

26、第56页(1)主函数中定义变量只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效。主函数也不能使用其它函数中定义变量。(2)不一样函数中能够使用相同名字变量,它们代表不一样对象,互不干扰。(3)形式参数也是局部变量。(4)在一个函数内部,能够在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为“分程序”或“程序块”。第57页void main()int a,b;int c;c=a+b;c在此范围内有效 a,b在此范围内有效 第58页 9.8.2 9.8.2 全局变量全局变量外部变量:函数之外定义变量称为外部变量。外部变量可认为本文件中其他函数所共用。它有效范围为

27、从定义变量位置开始到根源文件结束。所以也称全程变量。第59页int p=1,q=5;/*外部变量*/float f1(int a)/*定义函数f1*/int b,c;char c1,c2;/*外部变量*/char f2(int x,int y)/*定义函数f2*/int i,j;全局变量p,q作用范围 全局变量c1,c2作用范围void main()/*主函数*/int m,n;第60页例9.15 有一个一维数组,内放个学生成绩,写一个函数,求出平均分、最高分和最低分。#include float Max,Min;*全局变量*void main()float average(float arr

28、ay,int n);float ave,score10;int;for(;)scanf(,);ave=average(,);printf(“max=%6.2fnmin=%6.2fn average=%6.2fn“,Max,Min,ave);第61页float average(float array,int n)*定义函数,形参为数组*/int;float aver,sum=array;Max=Min=array;for(=;)if(arrayMax)Maxarray;else if(arrayMin)Min array;sum=sum+array;aver;return();运行情况以下:运行

29、情况以下:第62页第63页提议:无须要时不要使用全局变量,原因以下:全局变量在程序全部执行过程中都占用存放单元,而不是仅在需要时才开辟单元。使用全局变量过多,会降低程序清楚性。在各个函数执行时都可能改变外部变量值,程序轻易犯错。所以,要限制使用全局变量。第64页降低函数通用性。因为函数在执行时要依赖于其所在外部变量。假如将一个函数移到另一个文件中,还要将相关外部变量及其值一起移过去。但若该外部变量与其它文件变量同名时,就会出现问题,降低了程序可靠性和通用性。普通要求把程序中函数做成一个封闭体,除了能够经过“实参形参”渠道与外界发生联络外,没有其它渠道。第65页例例 9.9.6 6 外部变量与局部变量同名外部变量与局部变量同名#include int a=3,b=5;/*a,b为外部变量*/a,b作用范围void main()int a=8;/*a为局部变量*/局部变量a作用范围 printf(%d,max(a,b);全局变量b作用范围 max(int a,int b)/*a,b为局部变量*/int c;c=ab?ab;形参a、b作用范围 return(c);运行结果为运行结果为 8 第66页

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服