C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch07.pptx

C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch07.pptx

ID:51777101

大小:228.53 KB

页数:31页

时间:2020-03-07

C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch07.pptx_第1页
C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch07.pptx_第2页
C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch07.pptx_第3页
C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch07.pptx_第4页
C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch07.pptx_第5页
资源描述:

《C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch07.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、7.1函数概述7.2函数的声明7.3函数定义和函数调用7.4程序举例7.5函数的嵌套调用和递归调用7.6变量的作用域7.7变量的存储类别第7章函数7.1函数概述模块化程序设计基本思想:将一个大的程序按功能分割成一些小模块。特点:各模块相对独立、功能单一、结构清晰、接口简单控制了程序设计的复杂性缩短开发周期避免程序开发的重复劳动易于维护和功能扩充开发方法:自上向下,逐步分解,分而治之【例7.1】计算5!+6!+7!并输出结果。#includemain(){inti,t,num1=5,num2=6,num3=7,sum=0;for(i=1,t=1;i<=num1;i++

2、)t=t*i;sum=sum+t;for(i=1,t=1;i<=num2;i++)t=t*i;sum=sum+t;for(i=1,t=1;i<=num3;i++)t=t*i;sum=sum+t;printf("5!+6!+7!=%d",sum);}出现重复#includeintfac(intnum);main(){intt1,t2,t3,sum=0;t1=fac(5);t2=fac(6);t3=fac(7);sum=t1+t2+t3;printf("5!+6!+7!=%d",sum);}intfac(intnum)/*定义fac函数,num是形参*/{int

3、i,t;for(i=1,t=1;i<=num;i++)t=t*i;returnt;/*函数的返回值*/}7.2函数的声明函数声明的一般形式如下:类型标识符函数名(类型形参名1,类型形参名2,…);或类型标识符函数名(类型,类型,…);#includeintfac(intnum);/*对函数fac的声明语句*/main(){...}7.3函数定义和函数调用函数类型函数名(形参类型说明表){说明部分语句部分}函数定义:函数的调用调用形式函数名(实参表);说明:实参与形参个数相等,类型一致,按顺序一一对应实参表求值顺序,因系统而定#includeintm

4、ax(inta,intb);/*函数原型的声明*/intmain(){intx,y,z;printf("inputtwonumbers:");scanf("%d%d",&x,&y);z=max(x,y);/*函数的调用语句*/printf("maxmum=%d",z);return0;}/*以下是函数的定义部分*/intmax(inta,intb){if(a>b)returna;elsereturnb;}实参形参7.5函数的嵌套调用和递归调用7.5.1嵌套调用C规定:函数定义不可嵌套,但可以嵌套调用函数例7.7输入两个整数,输出较大值的函数调用过程如下图所示。7.5.2函数的递归

5、调用递归是一种特殊的解决问题的方法。其基本思想是:将要解决的问题分解成比原问题规模小的类似子问题,而解决这个类似子问题时,又可以用到原有问题的解决方法,按照这一原则,逐步递推转化下去,最终将原问题转化成较小且有已知解的子问题。(1)递推阶段:将原问题不断地转化成子问题,逐渐从未知向已知推进,最终到达已知解的问题,递推阶段结束。(2)回归阶段:从已知解的问题出发,按照递推的逆过程,逐一求值回归,最后到达递归的开始处,结束回归阶段,获得问题的解。例如:求5!递推阶段5!=5×4!→4!=4×3!→3!=3×2!→2!=2×1!→1!停止,其中1!=1回归阶段5!=5×4!=120←4!=

6、4×3!=24←3!=3×2!=6←2!=2×1!=2←1!=1例:有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2个人大2岁。问第2个人,说比第1个人大2岁。最后问第1个人,他说是10岁。请问第5个人多大。age(5)=age(4)+2age(4)=age(3)+2age(3)=age(2)+2age(2)=age(1)+2age(1)=10用数学公式表述如下:age(n)=10(n=1)age(n-1)+2(n>1)age(5)c=age(4)+2;returnc;age(intn){intc;if(n==1)

7、c=10;elsec=age(n-1)+2;returnc;}递归过程跟踪分析:age(4)c=age(3)+2;returnc;age(3)c=age(2)+2;returnc;age(2)c=age(1)+2;returnc;age(1)c=10returnc;c=10c=12c=14c=16c=187.6变量的作用域7.6.1局部变量1、定义:在一个函数(或复合语句)内部定义的变量。2、作用域:本函数(或复合语句)它只在本函数范围(或复合语句)内有效

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

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

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