C语言程序设计教案---第八章-函数_第1页
C语言程序设计教案---第八章-函数_第2页
C语言程序设计教案---第八章-函数_第3页
C语言程序设计教案---第八章-函数_第4页
C语言程序设计教案---第八章-函数_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八章信件数量主题:第8章功能14教学目的:1、掌握函数定义的一般形式2.掌握函数调用的一般形式教学重点:教学中的困难:函数定义,调用的一般形式形式参数和实际参数第1步回顾和指南一个C语言源程序可以由一个主函数和几个辅助函数组成。主函数调用其他函数,其他函数也可以相互调用。第二步讲授新课8.1概述示例8.1main() print star();print _ message();print star();printstar() printf( * * * * * * * * * * * n );print_message()打印(“你好! n );描述:F 1。源程序文件由一个或多个函数组成

2、。源程序文件是一个编译单元。F 2。一个C程序由一个或多个源程序文件组成。这可以单独编写和编译,以提高调度效率。F 3和C程序的执行从主功能开始,以主功能结束整个程序。F 4。所有函数都是并行的,也就是说,函数不能嵌套定义,函数可以相互调用,但主函数不能调用。F 5。从用户的角度来看,有两种类型的函数:标准函数(库函数)和用户定义的函数F 6。从函数的形式来看,函数可以分为两种类型:非参数函数和参数函数8.2功能定义的一般形式(a)无参数函数的定义类型标识符函数名()功能体(包括声明部分和执行部分)示例:printstar() printf( * * * * * * * * * * * n )

3、;(2)参数函数定义的一般形式类型标识符函数名(形式参数表)功能体(包括声明部分和执行部分)例如:int max(int x,int y) int z;z=xy?x:y返回(z);(3)函数可以是空函数如dummy() 8.3功能参数和功能值(a)形式参数和实际参数形参:定义函数时,函数名后面括号中的变量名,简称形参;实际参数:调用函数时,函数名后面括号中的表达式,它只是一个实际参数。示例:main() int a,b,c。scanf(%d,%d ,a,b);c=最大值(a,b);/*调用最大函数*/printf(“最大值=%d”,c);Int max(int x,int y) /*定义max

4、函数*/ int z;z=xy?x :y;返回(z);形式和实际参数的描述:当没有函数调用发生时,形式参数不会占用内存中的内存位置。只有当函数调用发生时,函数中的形式参数才能被分配给存储单元。在调用结束时,参数占用的存储单元也被释放。2.参数可以是常数、变量或表达式,例如c=max (3,ab);但是它们必须有一定的价值。调用时,参数的值被赋给参数(如果参数是数组名,则传递数组的第一个地址,而不是变量值。)3.在定义的函数中,必须指定形式参数的类型;4.实际参与参数的类型应该一致。5.C语言规定形式参数通过实际参数的数据传输是“值传输”,即单向传输。在存储器中,实际参数单元和形式参数单元是不同

5、的单元。(2)函数的返回值1.返回语句返回(表达式);或者:返回表达式;或者:返回;或者:函数在执行结束时遇到“”。返回语句有两个目的:(1)结束函数的执行,并将其返回给调用方;(2)用于向调用方传递返回值。注意:此声明适用于非无效函数。2.函数值的类型例如:int max(x,y)char字母(c1,c2)双倍最小值(x,y)C语言的默认函数返回值是整型。3.如果函数值的类型与返回语句中表达式的值不一致,以函数类型为准;main()浮动a,b;int c;scanf(%f,%f ,a,b);c=最大值(a,b);printf(“最大值为%dn”,c);最大值(浮动x,浮动y) float z

6、;z=xy?x :y;返回(z);如果输入数据是:1.5,2.5输出最大值为24.如果传递的函数中没有return语句,该函数将返回一个不确定的值。5.为了清楚地表明“无返回值”,可以用“空”来定义“无类型”(或“空类型”)。例如:无效打印消息()打印(“你好! n );8.4功能调用为了正确实现函数之间的相互调用,必须满足以下条件:首先,被调用的函数必须存在并允许被调用;其次,必须给出满足函数运行时要求的参数。第三,被调用的函数通常应该在调用函数之前声明。(一)函数声明的一般形式函数类型函数名称(参数类型1,参数类型2,参数类型N);或者:函数类型函数名称(参数类型1,参数名称1,参数类型2

7、.);例如:intprint (charformat,);char fun2(int i,char P1);浮点加法(浮点,浮点);注意:函数声明不同于函数定义!(2)函数调用的一般方法函数调用形式:函数名(参数表列);1.函数语句例如,上例中的print()。2.函数表达式例如:c=最大值(a,b)。3.功能参数例如,m=最大(a,最大(b,c);printf(%d ,最大值(a,b);int f(int a,int b) int c。如果(ab)c=1;否则,如果(a=b)c=0;否则c=-1返回(c);示例:main() int i=2,p;p=f(i,I);printf(%d ,p);

8、在TC环境中,顺序是从右到左评估。这个例子f (i,i)-f (3,3)示例:计算组合C(m,n)=m!/(n!(m-n)!)main() int m,n;长cmn,温度;长因子(int);scanf(%d %d ,m,n);cmn=系数(m);温度=因子(n);cmn=cmn/temp。cmn=cmn/因子(m-n);printf(%ldn ,cmn);第三步课堂总结1.参数函数的定义形式2.形式参数和实际参数之间的差异3、函数声明和调用分配作业书面作业:(第八章课后练习)8.1主题:第八章功能57教学目的:1、掌握嵌套调用和递归调用的功能2、掌握实际情况相结合教学重点:教学中的困难:嵌套和

9、递归调用,数组作为函数参数递归调用,现实与现实的结合第1步回顾和指南浮动根(浮动x1,浮动x2) int I;浮动x,y,y1;y1=f(x1);做 x=点(x1,x2);y=f(x);if (y*y10) y1=y;x1=x;否则 y2=y;x2=x;同时(晶圆厂(y)=0.0001);返回(x);第二步:教新班级8.6函数的递归调用直接或间接调用自身的函数是递归函数。当通过递归解决问题时,必须满足以下条件:(1)一个问题可以用同样的方法转化为一个更小的问题;(2)必须有明确的结束条件。例8.7:五个人坐在一起,问第五个人他多大了。他说他比第四个人大2岁,并问了第四个人的年龄。他说他比第三个

10、人大两岁,并问了第三个人的年龄。他说他比第二个人大两岁,并问了第二个人。他说他比第一个人大2岁,并问第一个人他说他10岁。我可以知道第五个人的年龄吗?(P158)分析:显然这是一个递归问题。那就是:年龄(5)=年龄(4) 2年龄(4)=年龄(3) 2年龄(3)=年龄(2) 2年龄(2)=年龄(1) 2年龄(1)=10岁程序:年龄(整数) int c。if(n=1)c=10;否则c=年龄(n-1)2;返回(c);main() printf(%d ,年龄(5);示例8.8:使用递归查找n!(P160)例如,斐波那契数列以前已经定义过,这个数列的第n项是用递归函数计算的。纤维(内部n) int f。if(n=0 | | n=1)f=1;否则f=fib(n-1)fib(n-2);返回(f);【练习8.13】:用递归方法求n阶勒让德多项式的值。递归公式是:1 (n=0)Pn(x)=x (n=1)(2n-1)XPn-1(x)-(n-1)Pn-2(x)/n(n1)main() int x,n;浮点p(int,int);printf(n输入n x : );scanf(%d,%d ,n,x);printf(“n=% d,x=%dn”,n,x);prin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论