第8次课函数的定义、声明和调用_第1页
第8次课函数的定义、声明和调用_第2页
第8次课函数的定义、声明和调用_第3页
第8次课函数的定义、声明和调用_第4页
第8次课函数的定义、声明和调用_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构又开始学习又开始学习新的一章了新的一章了第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构教学主题教学主题函数的定义、声明和调用函数的定义、声明和调用教学目标教学目标 通过本次课的学习,使学生掌握函数的定义、通过本次课的学习,使学生掌握函数的定义、声明及调用方法,函数之间参数传递的方法。声明及调用方法,函数之间参数传递的方法。教学重点教学重点 1函数的定义、声明及调用函数的定义、声明及调用 2函数的形参、实参、参数的传递函数的形参、实参、参数的传递 3函数的返回值函数的返回

2、值教学难点教学难点 1函数的定义、声明及调用三者的区别函数的定义、声明及调用三者的区别 2函数参数的传递方法函数参数的传递方法教案教案第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构主要内容主要内容 函数的全面认识函数的全面认识 函数的定义函数的定义 函数的调用函数的调用 函数的声明函数的声明 函数的形参和实参函数的形参和实参 函数的返回值函数的返回值第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构本章任务本章任务 编写(简易)成绩管理系统的主菜单框架,有编写(简易)成绩管理系统的主菜单框架,有输入成绩、计算总成绩、计

3、算平均成绩、输出成绩输入成绩、计算总成绩、计算平均成绩、输出成绩等菜单项。等菜单项。第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数的全面认识函数的全面认识 什么是函数?什么是函数? 函数是一个完成特定功能的程序段。函数是一个完成特定功能的程序段。 用户可以把程序编写成一个个相对独立的函用户可以把程序编写成一个个相对独立的函数模块,然后用调用的方法来实现所要求的功能。数模块,然后用调用的方法来实现所要求的功能。 采用函数结构的好处?采用函数结构的好处? 使程序层次结构清晰。使程序层次结构清晰。 便于程序的编写、阅读和调试。便于程序的编写、阅读和调试。第

4、第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数的全面认识函数的全面认识 一个一个C C程序程序由由一个主函数一个主函数和和若干个其它函数若干个其它函数构成。构成。 所有函数都是平行的,即在定义时相互独立的,所有函数都是平行的,即在定义时相互独立的,函数不能嵌套定义函数不能嵌套定义。 由由主函数调用其它函数主函数调用其它函数,其它函数其它函数之间可以之间可以相相互调用互调用。同一个函数同一个函数可以被一个或多个函数可以被一个或多个函数调用任调用任意多次意多次。 C C程序程序总是总是从从mainmain函数开始执行函数开始执行,mainmain函数执行函

5、数执行完,整个完,整个C C程序也就结束。程序也就结束。第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数的全面认识函数的全面认识 在在C语言中,函数有两种:语言中,函数有两种:标准库函数、用户自标准库函数、用户自定义函数定义函数。 C语言中的语言中的标准库函数是系统提供的标准库函数是系统提供的,主要提供,主要提供一些一些基本的功能基本的功能。比如前面提到的输入输出函数、。比如前面提到的输入输出函数、数学函数等。数学函数等。 在在使用使用这些这些库函数库函数的时候,必须的时候,必须包含包含该函数声明该函数声明所在的所在的头文件头文件。例如,使用例如,使用

6、scanf和和printf时,要在程序开始处加下时,要在程序开始处加下面一行。面一行。 #include “stdio.h”第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数的定义函数的定义 定义的位置定义的位置在语言中,所有的在语言中,所有的函数定义函数定义(包括主函数(包括主函数main在在内)内)都是平行的都是平行的。也就是说,在一个函数的函数体内,。也就是说,在一个函数的函数体内,不能再定义另一个函数,不能再定义另一个函数, 即即函数不能嵌套定义函数不能嵌套定义。第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结

7、构函数的定义函数的定义 函数定义的一般形式:函数定义的一般形式:有两种。有两种。格式格式2:类型标识符类型标识符 函数名(函数名(类型类型 形参形参1,类型,类型 形参形参n) 函数体函数体格式格式1:类型标识符类型标识符 函数名(函数名(形参表形参表)形参类型说明形参类型说明; 函数体函数体说明说明函数的返回值类型函数的返回值类型,可以是任何一种有效类型,可以是任何一种有效类型,当返回值是当返回值是int或或char时可时可以省略,不需要返回值时以省略,不需要返回值时写成写成void。必须是一个合必须是一个合法的标识符。法的标识符。TCTC中两种格式都可以用,中两种格式都可以用,VCVC环境

8、中用格式环境中用格式2 2。第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数定义举例函数定义举例 【问题【问题1 1】编写函数编写函数max(),求整型求整型a、b的较大数,并的较大数,并作为函数值返回。作为函数值返回。 用格式用格式1编码如下:编码如下:int max( a, b )int a, b; int c; c = a=b?a:b; return c;函数头部函数头部函数名为函数名为maxmax函数返回值类型为函数返回值类型为intint有有a a、b b两个形参,类型为整型两个形参,类型为整型函数体函数体将变量将变量c c的值作为函数值返回

9、,的值作为函数值返回,其类型为其类型为intint,和上面一致。,和上面一致。第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数定义举例函数定义举例 【问题【问题1 1】编写函数编写函数max(),求整型求整型a、b的较大数,并的较大数,并作为函数值返回。作为函数值返回。 用格式用格式2编码如下:编码如下:int max( int a, int b ) int c; c = a=b?a:b; return c;提倡大家用格式提倡大家用格式2 2第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数的调用函数的调用 在完

10、成函数的定义以后,就可以调用函数了。在完成函数的定义以后,就可以调用函数了。 函数调用的一般形式函数调用的一般形式 函数名(实参表列)函数名(实参表列)如果调用的是无参函数,如果调用的是无参函数,则则“实参表列实参表列”可以没有,可以没有,但括弧不能省略。但括弧不能省略。第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数的调用函数的调用 函数调用的方式主要有三种情况:函数调用的方式主要有三种情况: 函数语句:函数语句:适合于无返回值的函数,或者不需要使适合于无返回值的函数,或者不需要使用返回值的函数。用返回值的函数。 例如:例如: printf( “he

11、llo!” ); 函数表达式:函数表达式:出现在一个表达式中,此时使用函数出现在一个表达式中,此时使用函数的返回值,并将此返回值作为运算对象参与表达式的的返回值,并将此返回值作为运算对象参与表达式的运算。运算。 例如:例如: c=3*max(a,b); 函数参数:函数参数:将函数调用作为一个函数的实参。将函数调用作为一个函数的实参。 例如:例如: d=max( c, max(a,b) );第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数调用举例函数调用举例 【问题【问题2 2】利用前面的】利用前面的max函数,编写函数,编写main函数,函数,实现求三

12、个整数的最大数。实现求三个整数的最大数。 源程序源程序void main() int a,b,c,d; scanf(%d,%d,%d,&a,&b,&c); d=max(c,max(a,b); printf(MAX=%d,d); 思考思考 有几处函数调用?有几处函数调用? 分别是哪种调用方式?分别是哪种调用方式?运行程序运行程序(7_2)看源程序看源程序(7_2)第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数调用举例函数调用举例 【问题【问题3 3】编写程序,实现求三个实数的最大数。编写程序,实现求三个实数的最大数。运行程序运行

13、程序(7_3)看源程序看源程序(7_3) 思考思考将两个函数的位置前后交换一下,结果如何?将两个函数的位置前后交换一下,结果如何?调用集成开发环境演示!调用集成开发环境演示!第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数的声明函数的声明 被调函数应具备的条件:被调函数应具备的条件: 必须已存在(定义);必须已存在(定义); 如是库函数,应该在本文件的开头用如是库函数,应该在本文件的开头用#include#include命命令将有关的头文件包含到本文件中。令将有关的头文件包含到本文件中。 如是用户自定义函数,并且定义在后调用在前,如是用户自定义函数,并

14、且定义在后调用在前,则必须在调用之前对被调函数作声明。则必须在调用之前对被调函数作声明。 第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数的声明函数的声明 函数声明的一般格式:函数声明的一般格式: 类型标识符类型标识符 函数名函数名( (类型类型 形参,形参,类型,类型 形参形参) ); ; 例如:例如: double max(doubledouble max(double a, double b ) a, double b ); 注意注意 函数声明(函数声明(函数首部加一个分号函数首部加一个分号)和函数定义)和函数定义(对函数功能的确立对函数功能的确

15、立)的不同。)的不同。 在函数声明中可以不写形参名,而在函数声明中可以不写形参名,而只写形参的类只写形参的类型型。 例如:例如: double max(doubledouble max(double, double ), double );不可少第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构再看问题再看问题3 【问题【问题3 3】编写程序,实现求三个实数的最大数。编写程序,实现求三个实数的最大数。运行程序运行程序(7_3_1)看源程序看源程序(7_3_1) 思考思考将两个函数的位置前后交换一下,结果如何?将两个函数的位置前后交换一下,结果如何?解决办法:

16、对函数进行声明。解决办法:对函数进行声明。第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数定义、调用、声明三者关系函数定义、调用、声明三者关系 函数定义、函数调用、函数声明三者的区别:函数定义、函数调用、函数声明三者的区别: 函数定义函数定义是实现一定功能的程序段。是实现一定功能的程序段。 函数调用函数调用是对函数的使用。是对函数的使用。 函数声明函数声明是说明语句,说明函数的返回值类型、是说明语句,说明函数的返回值类型、函数参数的个数及类型。函数参数的个数及类型。第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构d

17、ouble max( double a, double b ); double max( double a, double b ); void main()void main() double a,b,c,d double a,b,c,d; ; printf printf( ( 请输入请输入3 3个实数(以逗号隔开):个实数(以逗号隔开): ); ); scanf(%lf,%lf,%lf,&a,&b,&c scanf(%lf,%lf,%lf,&a,&b,&c); ); d=max(c,max(a,b d=max(c,max(a,b); ); pr

18、intf(MAX=%lfn,d printf(MAX=%lfn,d);); double max( double a, double b ) double max( double a, double b ) double c; double c; c = a=b?a:b c = a=b?a:b; ; return c; return c; 函数定义、调用、声明三者关系函数定义、调用、声明三者关系函数调用函数调用函数声明函数声明函数定义函数定义第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数的形参和实参函数的形参和实参 形参形参(形式参数的简称):(形式

19、参数的简称):在函数的在函数的定义和声明语定义和声明语句句中,函数名后面括号中的参数。中,函数名后面括号中的参数。 实参实参(实际参数的简称):(实际参数的简称):在函数的在函数的调用语句调用语句中,中,函数名后面括号中的参数。函数名后面括号中的参数。 形参和实参是形参和实参是主调函数和被调函数进行主调函数和被调函数进行信息通信的信息通信的接口接口。传递给传递给实参实参 形参形参第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构参数传递规则参数传递规则 在实参向形参传送参数的过程中,在实参向形参传送参数的过程中,遵循如下的规则遵循如下的规则: 数目一致、类型

20、兼容数目一致、类型兼容。 实参可以是常量、变量或表达式实参可以是常量、变量或表达式,但它们应有,但它们应有确定的值确定的值;形参只能是变量形参只能是变量,而且,而且形参形参随着函数被调用而占有内存单元,随着函数被调用而占有内存单元,函数调用结束时,其所占内存单元也释放。函数调用结束时,其所占内存单元也释放。 如同时有多个实参,如同时有多个实参,实参的求值顺序实参的求值顺序有的系统是自左而有的系统是自左而右,有的系统是自右而左。右,有的系统是自右而左。Turbo c Turbo c 和和 MS c MS c 是是自右而左自右而左顺顺序求值。序求值。 单向值传递单向值传递,即:只由实参传给形参,而

21、不能由形参传,即:只由实参传给形参,而不能由形参传回来给实参(换言之,回来给实参(换言之,形参的值的变化不会影响实参形参的值的变化不会影响实参)。)。运行程序运行程序(7_3_2)看源程序看源程序(7_3_2)第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构参数传递举例参数传递举例 【问题【问题4 4】输入两个数,并求和。要求用函数实现求输入两个数,并求和。要求用函数实现求和。和。运行程序运行程序(7_4)看源程序看源程序(7_4) 思考思考 上述程序能实现求和吗?为什么?上述程序能实现求和吗?为什么?由于参数采用由于参数采用“单向值传递单向值传递”,所以

22、变量所以变量c c不能得到正确的结果。不能得到正确的结果。第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构函数的返回值函数的返回值 通常,通常,函数运算结果由函数返回值返回的函数运算结果由函数返回值返回的。 函数的返回值函数的返回值是通过函数中的是通过函数中的returnreturn语句语句获得。获得。 函数返回值的类型函数返回值的类型应当在应当在定义函数时指定定义函数时指定。 函数返回值的类型和函数返回值的类型和returnreturn语句中表达式的类型语句中表达式的类型不一致不一致时,则以时,则以函数返回值类型函数返回值类型为准。为准。 如果如果不使用

23、不使用returnreturn语句语句,则带回一个,则带回一个不确定的值。不确定的值。 为了为了明确表示明确表示“不带回值不带回值”,可以使用,可以使用“void”void”定义成定义成“无类型无类型”。 第第3章章第第8次课次课-函数的定义、声明和调用函数的定义、声明和调用C语言与数据结构再看问题再看问题4 【问题【问题4 4】输入两个数,并求和。要求用函数实现求和。输入两个数,并求和。要求用函数实现求和。 正确的源程序正确的源程序运行程序运行程序(7_4_1)intint sum(int x, intsum(int x, int y) y) intint z; z; z=x+y z=x+y; ; return z;return z; void main()void main() int a,b,c int a,b,c=0;=0; scanf(%d%d,&a,&b scanf(%d%d,&a,&b);); c=sum (a,bc=sum (a,b)

温馨提示

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

评论

0/150

提交评论