c语言第7章 模块化程序设计.ppt

c语言第7章 模块化程序设计.ppt

ID:51492210

大小:47.00 KB

页数:15页

时间:2020-03-24

c语言第7章 模块化程序设计.ppt_第1页
c语言第7章 模块化程序设计.ppt_第2页
c语言第7章 模块化程序设计.ppt_第3页
c语言第7章 模块化程序设计.ppt_第4页
c语言第7章 模块化程序设计.ppt_第5页
资源描述:

《c语言第7章 模块化程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第7章模块化程序设计本章主要描述模块化程序及模块化编程技术第七章模块化程序设计7.1模块化程序概述7.2用函数实现模块化编程技术7.3常见编程错误7.1概述1.模块化编程概念当解决一个比较复杂的问题时,如果把问题分解成若干个易于求解的子问题,每个子问题都用一个相对独立的程序段来处理,最后再把所有的程序段结合在一起,形成完整程序,这就是模块化程序设计的方法。2.模块化编程的基本方法和步骤模块化编程主要针对两方面:分析数据、控制程序流程。实现模块化编程主要分为五步:Step1:明确问题Step2:分析问题Step3:算法设计(1)分解模块(2)

2、设计模块Step4:实现模块Step5:测试7.2用函数实现模块化编程技术使用函数实现模块化编程,通常可以通过嵌套调用、递归调用、按地址传递以及空返回等方式来实现。7.2.1.函数的嵌套调用1.嵌套调用一个函数在被调用的同时,又调用了另外一个函数,称为嵌套调用,如图所示:函数A函数B函数C调用调用2.【案例7.1】编写程序,计算并打印两个整数的平均值。/*求两个整数的平均值*/#includeIntsum(intn1,intn2){Ints;s=n1+n2;returns;}Intave(intnum1,intnum2){

3、intx;x=sum(num1,num2)/2;/*在ave函数中调用sum函数*/returnx;}Intmain(){inta,b;printf(“a=”);scanf(“%d,&a”);printf(“b=”);scanf(“%d,&b”);printf(“theaverageis:%d”,ave(a,b);)/*调用求平均函数*/return0;}3.代码分析函数执行过程:(1)执行main函数的开头部分(2)遇到调用ave函数的语句,流程转去ave函数(3)执行ave函数的开头部分(4)遇到调用sum函数的语句,流程转去sum

4、函数(5)执行sum函数,没有再调用其它函数,完成sum函数全部操作。(6)返回调用sum函数处,即回到ave函数(7)继续执行ave函数尚未执行的部分,直到ave结束(8)返回到main中调用ave处(9)继续执行main的剩余部分语句,直到结束。7.2.2递归调用1.定义嵌套调用还有一种特殊的格式,就是一个函数直接或者间接的调用自己,称为递归调用。如图所示:函数调用函数A函数B调用2.【案例7.2]有5各人坐在一起,求第五个人的岁数?他比第四个人大3岁。第四个人比第三个人大3岁,第三个人比第二个人大3岁,第二个人比第一个人大3岁。第一个

5、人是10岁。(用递归编程)/*使用递归调用*/#includeIntage(intn){intx;if(n==1)x=10;/*递归终止的条件*/elsex=age(n-1)+3;/*递归调用自身*/returnx;}Intmain(){printf(“第五个人%d岁”,age(5));return0;}3.源码分析说明递归调用以递归终止条件是否成立为界限,分为递推和回推两个阶段:(1)递归调用终止条件递归调用不可以无终止的调用下去,否则就成了死循环。递归调用必须有一个终止条件。案例7.2的递归调用终止条件是n==1,

6、即当求到第一个人的年龄时,结束调用。(2)递推过程当终止条件不成立时,调用age函数。传递的实参值时n-1,每调用一次,n的值就减1,即先调用age(5),求age(5)的值就是求age(4)+3;再调用age(4),求age(4)的值就是求age(3)+3…直到n的值等于1。(3)回推过程当终止条件成立时,终止递归调用,执行x=10;然后执行语句returnx;将x的值返回给age(1),则age(1)的值是10。再将age(1)+3的值13返回给age(2),依次类推,每返回一次,就退回到上一级,直到把age(4)+3的值22返回给ag

7、e(5).7.2.3指针变量做形参1.定义在函数调用时,将实参的地址传递给形参,实参和形参共用同一个存储单元,当形参的值发生变化时,实参的值也发生变化。2.[案例7.3]值传递和传递地址的比较/*使用传递地址和传递值的方式,改变两个变量的值*/#includeVoidtranAddress(int*p1,int*p2)/*形参是两个指针变量*/{*p1+=10;*p2-=5;}VoidtranValue(intx,inty)/*形参时两个整型变量*/{x+=10;y-=5;}Intmain(){inta=3,b=5;pri

8、ntf(“调用函数前a=%d,b=%d”,a,b);tranValue(a,b);printf(“使用值传递方式调用函数后,a=%d,b=%d”,a,b);tranAdd

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。