用函数实现模块化程序设计22222市公开课一等奖百校联赛特等奖课件.pptx
《用函数实现模块化程序设计22222市公开课一等奖百校联赛特等奖课件.pptx》由会员分享,可在线阅读,更多相关《用函数实现模块化程序设计22222市公开课一等奖百校联赛特等奖课件.pptx(71页珍藏版)》请在咨信网上搜索。
1、第第7章章 用函数实现模块化程序设计用函数实现模块化程序设计7.1为何要用函数为何要用函数7.2怎样定义函数怎样定义函数7.3调用函数调用函数7.4对被调用函数申明和函数原型对被调用函数申明和函数原型7.5函数嵌套调用函数嵌套调用7.6函数递归调用函数递归调用7.7数组作为函数参数数组作为函数参数7.8局部变量和全局变量局部变量和全局变量7.9变量存放方式和生存期变量存放方式和生存期7.10关于变量申明和定义关于变量申明和定义7.11内部函数和外部函数内部函数和外部函数第1页7.8局部变量和全局变量局部变量和全局变量7.8.1局部变量局部变量7.8.2全局变量全局变量第2页7.8.1 局部变量
2、局部变量定义变量可能有三种情况:定义变量可能有三种情况:u在函数开头定义在函数开头定义u在函数内复合语句内定义在函数内复合语句内定义u在函数外部定义在函数外部定义第3页7.8.1 局部变量局部变量在一个函数内部定义变量只在本函数范在一个函数内部定义变量只在本函数范围内有效围内有效在复合语句内定义变量只在本复合语句在复合语句内定义变量只在本复合语句范围内有效范围内有效在在函数内部函数内部或复合语句内部定义变量称或复合语句内部定义变量称为为“局部变量局部变量”第4页floatf1(inta)intb,c;charf2(intx,inty)inti,j;intmain()intm,n;return0
3、;a、b、c仅在仅在此函数内此函数内有效有效x、y、i、j仅在仅在此函数内此函数内有效有效m、n仅在此仅在此函数内函数内有效有效第5页floatf1(inta)intb,c;charf2(intx,inty)inti,j;intmain()inta,b;return0;类似于不一类似于不一样班同名学样班同名学生生a、b也仅在此也仅在此函数内函数内有效有效第6页intmain()inta,b;intc;c=a+b;c仅在此复合仅在此复合语句内语句内有效有效a、b仅在此复仅在此复合语句内合语句内有效有效第7页7.8.2全局变量全局变量在函数内定义变量是局部变量,而在函数在函数内定义变量是局部变量,
4、而在函数之外定义变量称为外部变量之外定义变量称为外部变量外部变量是全局变量外部变量是全局变量(也称全程变量也称全程变量)全局变量可认为本文件中其他函数所共用全局变量可认为本文件中其他函数所共用有效范围为从定义变量位置开始到根源文有效范围为从定义变量位置开始到根源文件结束件结束第8页intp=1,q=5floatf1(inta)intb,c;charc1,c2;charf2(intx,inty)inti,j;intmain()intm,n;return0;p、q、c1、c2为为全局变量全局变量第9页intp=1,q=5floatf1(inta)intb,c;charc1,c2;charf2(in
5、tx,inty)inti,j;intmain()intm,n;return0;p、q有效范围有效范围c1、c2有效范围有效范围第10页例例7.14有一个一维数组,内放有一个一维数组,内放10个学个学生成绩,写一个函数,当主函数调用此函生成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分。数后,能求出平均分、最高分和最低分。解题思路:调用一个函数可以得到一个函解题思路:调用一个函数可以得到一个函数返回值,现在希望通过函数调用能得到数返回值,现在希望通过函数调用能得到3个结果。可以利用全局变量来达到此目。个结果。可以利用全局变量来达到此目。第11页#includefloatMax
6、=0,Min=0;intmain()floataverage(floatarray,intn);floatave,score10;inti;printf(Pleaseenter10scores:n);for(i=0;i10;i+)scanf(%f,&scorei);ave=average(score,10);printf(max=%6.2fnmin=%6.2fnaverage=%6.2fn,Max,Min,ave);return0;第12页floataverage(floatarray,intn)inti;floataver,sum=array0;Max=Min=array0;for(i=1;
7、iMax)Max=arrayi;elseif(arrayiMin)Min=arrayi;sum=sum+arrayi;aver=sum/n;return(aver);第13页 ave score 10 Max Min aver array n Max Minmain函数函数average函数函数提议不在必要时不要使用全局变量提议不在必要时不要使用全局变量第14页例例7.15若外部变量与局部变量同名,分若外部变量与局部变量同名,分析结果。析结果。第15页#includeinta=3,b=5;intmain()intmax(inta,intb);inta=8;printf(“max=%dn”,ma
8、x(a,b);return0;intmax(inta,intb)intc;c=ab?a:b;return(c);a为为局局部部变量变量,仅,仅在此函数内有效在此函数内有效b为全部为全部变量变量第16页#includeinta=3,b=5;intmain()intmax(inta,intb);inta=8;printf(“max=%dn”,max(a,b);return0;intmax(inta,intb)intc;c=ab?a:b;return(c);a、b为为局局部部变量变量,仅,仅在此函数内有效在此函数内有效第17页7.9变量存放方式和生存期变量存放方式和生存期7.9.1动态存放方式与静态
9、存放方式动态存放方式与静态存放方式7.9.2局部变量存放类别局部变量存放类别7.9.3全局变量存放类别全局变量存放类别7.9.4存放类别小结存放类别小结第18页7.9.1动态存放方式与静态存放方式动态存放方式与静态存放方式从变量作用域角度来观察,变量能够分为从变量作用域角度来观察,变量能够分为全局全局变量变量和和局部变量局部变量从变量值存在时间从变量值存在时间(即生存期即生存期)观察观察,变量存变量存放有两种不一样方式:放有两种不一样方式:静态存放方式静态存放方式和和动态存动态存放方式放方式u静态存放方式是指在程序运行期间由系统静态存放方式是指在程序运行期间由系统分配固定存放空间方式分配固定存
10、放空间方式u动态存放方式是在程序运行期间依据需要动态存放方式是在程序运行期间依据需要进行动态分配存放空间方式进行动态分配存放空间方式第19页程序区程序区静态存放区静态存放区动态存放区动态存放区用户区用户区将将数据存放在数据存放在此区此区全局变量全部存放全局变量全部存放在静态存放区中在静态存放区中函数形式参数函数形式参数函函数中定义没有用关键数中定义没有用关键字字static申明变量申明变量函函数调用时现场保护和数调用时现场保护和返回地址等返回地址等存放在动存放在动态存放区态存放区程序程序开始执行时给全局开始执行时给全局变量分配存放区,程序变量分配存放区,程序执行完成就释放。在程执行完成就释放。
11、在程序执行过程中占据固定序执行过程中占据固定存放单元存放单元函数调用开始时分配,函数调用开始时分配,函数结束时释放。在程函数结束时释放。在程序执行过程中,这种分序执行过程中,这种分配和释放是动态配和释放是动态第20页每一个变量和函数都有两个属性:每一个变量和函数都有两个属性:数据类型数据类型和数据和数据存放类别存放类别u数据类型数据类型,如整型、浮点型等,如整型、浮点型等u存放类别存放类别指是数据在内存中存放方式指是数据在内存中存放方式(如静态如静态存放和动态存放存放和动态存放)u存放类别存放类别包含包含:自动、静态、存放器、外部自动、静态、存放器、外部u依据变量存放类别,能够知道变量作用域和
12、生依据变量存放类别,能够知道变量作用域和生存期存期第21页7.9.2 局部变量存放类别局部变量存放类别1.自动变量自动变量(auto变量变量)u局部变量,假如不专门申明存放类别,都局部变量,假如不专门申明存放类别,都是动态地分配存放空间是动态地分配存放空间u调用函数时,系统会给调用函数时,系统会给局部局部变量分配存放变量分配存放空间,调用结束时就自动释放空间。所以空间,调用结束时就自动释放空间。所以这类局部变量称为自动变量这类局部变量称为自动变量u自动变量用关键字自动变量用关键字auto作存放类别申明作存放类别申明第22页7.9.2 局部变量存放类别局部变量存放类别intf(inta)auto
13、intb,c=3;能够省略能够省略第23页7.9.2 局部变量存放类别局部变量存放类别2.静态局部变量静态局部变量(static局部变量局部变量)希望函数中局部变量在函数调用结束后希望函数中局部变量在函数调用结束后不消失而继续不消失而继续保留原值保留原值,即其占用存放,即其占用存放单元不释放,在下一次再调用该函数时,单元不释放,在下一次再调用该函数时,该变量已经有值该变量已经有值(就是上一次函数调用就是上一次函数调用结束时值结束时值),这时就应该指定该局部变这时就应该指定该局部变量为量为“静态局部变量静态局部变量”,用关键字,用关键字static进行申明进行申明第24页例例7.16考查静态局部
14、变量值。考查静态局部变量值。#includeintmain()intf(int);inta=2,i;for(i=0;i3;i+)printf(“%dn”,f(a);return0;intf(inta)autointb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);调用三次调用三次每调用一次,开辟每调用一次,开辟新新a和和b,但,但c不是不是第25页例例7.16考查静态局部变量值。考查静态局部变量值。#includeintmain()intf(int);inta=2,i;for(i=0;i3;i+)printf(“%dn”,f(a);return0;intf(int
15、a)autointb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);03bc第一次调用开始第一次调用开始第26页例例7.16考查静态局部变量值。考查静态局部变量值。#includeintmain()intf(int);inta=2,i;for(i=0;i3;i+)printf(“%dn”,f(a);return0;intf(inta)autointb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);03bc第一次调用期间第一次调用期间14第27页例例7.16考查静态局部变量值。考查静态局部变量值。#includeintmain()int
16、f(int);inta=2,i;for(i=0;i3;i+)printf(“%dn”,f(a);return0;intf(inta)autointb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);bc第一次调用结束第一次调用结束147第28页例例7.16考查静态局部变量值。考查静态局部变量值。#includeintmain()intf(int);inta=2,i;for(i=0;i3;i+)printf(“%dn”,f(a);return0;intf(inta)autointb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);bc第二次
17、调用开始第二次调用开始04第29页例例7.16考查静态局部变量值。考查静态局部变量值。#includeintmain()intf(int);inta=2,i;for(i=0;i3;i+)printf(“%dn”,f(a);return0;intf(inta)autointb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);bc第二次调用期间第二次调用期间04 51第30页例例7.16考查静态局部变量值。考查静态局部变量值。#includeintmain()intf(int);inta=2,i;for(i=0;i3;i+)printf(“%dn”,f(a);retur
18、n0;intf(inta)autointb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);bc第二次调用结束第二次调用结束158第31页例例7.16考查静态局部变量值。考查静态局部变量值。#includeintmain()intf(int);inta=2,i;for(i=0;i3;i+)printf(“%dn”,f(a);return0;intf(inta)autointb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);bc第三次调用开始第三次调用开始05第32页例例7.16考查静态局部变量值。考查静态局部变量值。#includein
19、tmain()intf(int);inta=2,i;for(i=0;i3;i+)printf(“%dn”,f(a);return0;intf(inta)autointb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);bc第三次调用期间第三次调用期间05 61第33页例例7.16考查静态局部变量值。考查静态局部变量值。#includeintmain()intf(int);inta=2,i;for(i=0;i3;i+)printf(“%dn”,f(a);return0;intf(inta)autointb=0;staticc=3;b=b+1;c=c+1;return(
20、a+b+c);bc第三次调用结束第三次调用结束169第34页例例7.16考查静态局部变量值。考查静态局部变量值。#includeintmain()intf(int);inta=2,i;for(i=0;i3;i+)printf(“%dn”,f(a);return0;intf(inta)autointb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);c整个程序结束整个程序结束6第35页例例7.16考查静态局部变量值。考查静态局部变量值。#includeintmain()intf(int);inta=2,i;for(i=0;i3;i+)printf(“%dn”,f(a)
21、;return0;intf(inta)autointb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);在编译时赋初值在编译时赋初值在函数调用时赋初值在函数调用时赋初值第36页例例7.16考查静态局部变量值。考查静态局部变量值。#includeintmain()intf(int);inta=2,i;for(i=0;i3;i+)printf(“%dn”,f(a);return0;intf(inta)autointb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);若不赋若不赋初值初值,是,是0若不若不赋初值赋初值,不确定,不确定第37页例例
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 实现 模块化 程序设计 22222 公开 一等奖 联赛 特等奖 课件
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。