《C语言程序设计》上机报告10

《C语言程序设计》上机报告10

ID:42198965

大小:142.10 KB

页数:8页

时间:2019-09-10

《C语言程序设计》上机报告10_第1页
《C语言程序设计》上机报告10_第2页
《C语言程序设计》上机报告10_第3页
《C语言程序设计》上机报告10_第4页
《C语言程序设计》上机报告10_第5页
资源描述:

《《C语言程序设计》上机报告10》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、上机10函数(2)上机课时课内:2课时;课外:2课时上机类型验证性上机上机目的1.掌握C语言函数的嵌套调用。2.掌握C语言函数的递归调用。上机内容1.C语言函数的嵌套调用C语言中对函数的定义不允许嵌套,也就是说不允许在一个函数内部再定义其他函数,充分显示函数的独立性和程序的模块化。但是C语言允许在一个函数的定义中出现对另一个函数的调用。这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。这与其它语言的子程序嵌套的情形是类似的。其关系可表示如图。main函数a函数b函数调用a函数调用b函数图表示了两层嵌套的情形。其执行过程是:

2、执行main函数中调用a函数的语句时,即转去执行a函数,在a函数中调用b函数时,又转去执行b函数,b函数执行完毕返上机10函数(2)上机课时课内:2课时;课外:2课时上机类型验证性上机上机目的1.掌握C语言函数的嵌套调用。2.掌握C语言函数的递归调用。上机内容1.C语言函数的嵌套调用C语言中对函数的定义不允许嵌套,也就是说不允许在一个函数内部再定义其他函数,充分显示函数的独立性和程序的模块化。但是C语言允许在一个函数的定义中出现对另一个函数的调用。这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。这与其它语言的子程序嵌套的

3、情形是类似的。其关系可表示如图。main函数a函数b函数调用a函数调用b函数图表示了两层嵌套的情形。其执行过程是:执行main函数中调用a函数的语句时,即转去执行a函数,在a函数中调用b函数时,又转去执行b函数,b函数执行完毕返回a函数的断点继续执行,a函数执行完毕返回main函数的断点继续执行。上机任务1任务要求:读懂下列程序,给程序加注释,并输出结果。#includeintfunl(doublea){returna*=a;}intfun2(doublexzdoubley){doublea=O,b=O;a=fu

4、nl(x);b=funl(y);return(a+b);}intmainO{doublew;w=fun2(l.l,2.0);return0;}上机任务2任务要求:读懂下列程序,给程序加注释,并输出结果。#includeintf(intx);intmainO{intn=lrm;printff%dm);returnO;intf(intx){returnx*2;}1.C语言函数的递归调用—个函数在它的函数体内调用它自身称为递归调用。这种函数称为递归函数。C语言允许函数的递归调用。在递归调用中,主调函数又是被调函数

5、。执行递归函数将反复调用其自身,每调用一次就进入新的一层。为了防止递归调用无终止地进行,必须在函数内有终止递归调用的手段。常用的办法是加条件判断,满足某种条件后就不再作递归调用,然后逐层返回。下面举例说明递归调用的执行过程。用递归法计算n!可用下述公式表示:n!=l(n=0,1)n*(n-l)!(n>l)用代码表示如下:longff(intn){longf;if(n<0)printf(^<0,inputerror");elseif(n==0

6、

7、n==l)f=l;elsef=ff(n-l)*n;return(f);}程序中给出的函数

8、ff是一个递归函数。主函数调用ff后即进入函数ff执行,如果n<0,n==0或n=l时都将结束函数的执行,否则就递归调用ff函数自身。由于每次递归调用的实参为n-1,即把n-l的值赋予形参n,最后当叶1的值为1时再作递归调用,形参n的值也为1,将使递归终止。然后可逐层退回。下面我们再举例说明该过程。设执行本程序时输入为5,即求5!。在主函数中的调用语句即为y=ff(5),进入ff函数后,由于n=5,不等于0或1,故应执行f=ff(n-l)*n,即f二ff(5-1)*5。该语句对ff作递归调用即ff(4)。进行四次递归调用后,ff函

9、数形参取得的值变为1,故不再继续递归调用而开始逐层返回主调函数。ff(l)的函数返回值为1,ff(2)的返回值为1*2=2,ff(3)的返回值为2*3二6,ff(4)的返回值为6*4二24,最后返回值ff(5)为24*5=120。上述求n!也可以不用递归的方法来完成。如可以用递推法,即从1开始乘以2,再乘以3…直到n。递推法比递归法更容易理解和实现。但是有些问题则只能用递归算法才能实现。上机任务3任务要求:小明为了学好英语,需要每天记单词,第一天记1个,第二天记2个依次类推,到第10天的时候小明一共记了多少个单词?请用代码完成,算

10、出小明第10天开始的时候会了多少个单词?根据注释提示完成代码输出结果为.小明第10天记了:55个单词。1#include2V定义获取单词数量的因数*/3intgetWordNumber(n)4,{5if(n==1)6,{7retu

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

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

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