资源描述:
《C语言教案-第十一周.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第十一节函数的定义与调用1:通过本节课的学习,使学生了解函数的定义,学会函数的调用以及了解形参和实参的概念和区别1.1教学目的:1.掌握函数的定义2.掌握函数的调用3.掌握形参与实参的概念与用法1.2教学内容:1.函数的定义2.函数的调用3.函数传递参数的方法1.3教学重点:传递参数1.4教学方法:讲授法、习题1.5学习方法:练习、总结1.6学习时间:第十七周2:回顾上一节:[5分钟]处理多个数据排序会用到数组,具体如何使用3:课程知识点讲解:具体知识点1:函数的定义[25分钟]知识点讲解:1.无参函数的定义定义格式:数据类型函数名(){
2、函数体(说明部分+语句)}2.有参函数的定义定义格式:数据类型函数名(带类型形参表){函数体(说明部分+语句)}函数的返回值通过函数体中的return语句获得。说明:(1)函数名不能与该程序中的其它函数名重名,也不能与函数中的其它标识符相同。(2)定义有参函数后,形参并没有具体的值,只有被调用时才得到具体的值,形参必须是变量。函数可以没有形参,但不能省略函数名后的括号。案例讲解:编程分析:定义函数max()实现两数大小的比较。定义一个主函数进行数据的输入和输出。intmax(floatx,floaty)/*自编函数max(floatx,f
3、loaty)求较大的数。*/{floatz;z=x>y?x:y;returnz;/*返回主函数*/}main(){floata=1.5,b=5.5;/*定义两个实数*/intc;c=max(a,b);/*调用函数*/printf(“Maxis%d”,c);}程序运行结果:Maxis5具体知识点2:函数的调用[15分钟]知识点讲解:一般形式为函数名([实参1,实参2……])其中用方括号括起来的部分为可选项。调用时一般有三种方式:赋值如:c=max(x,y);表达式中如:c=1+max(x,y);printf(“Max=%d”,max
4、(x,y));执行函数如:max(x,y);说明:(1)在一个函数中可以多次调用其他函数,但调用语句中的函数名必须与被调用函数的函数名相同。(2)实参应与形参个数相同、位置对应、类型一致,实参可以是表达式,但在调用函数前必须确定其值。(3)实参是变量时,可以与对应的形参同名。(原因是不同函数中的同名变量占用不同的存储空间。)调用同一源文件中的非标准函数数据类型函数名(形参表)调用其他源文件中定义的函数extern函数名(形参表)在程序中要调用另一个函数,应注意以下问题:(1)被调函数必须存在,被调用函数可以是标准库中的函数、自己建立的函数
5、库中的函数或自编函数。(2)被调用的函数的定义位置正确。标准库中的函数、自己建立的函数库的函数,则在主调函数前必须有#include命令行(将含有该函数信息的文件包含进来)。如果被调用函数是自编函数,应定义在主调函数之前或在主调函数中对所调函数进行说明。(3)实参与形参的个数相同;实参与形参对应的类型一致;每个实参都必须有确定值案例讲解:main(){intx=80,y=90,c;externmax();/*函数说明*/c=max(x,y)+20;/*调用max函数*/printf(“Maxis%d”,c);}externmax(in
6、ta,intb)/*extern可省*/{floatc;c=a>b?a:b;returnc;}/*返回到主调函数*/程序运行结果:Maxis110知识点讲解:函数的形参与实参[30分钟]关于形参与实参的说明:1.在定义函数中指定的形参变量,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用时函数myswap中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放。2.实参可以是常量、变量或表达式,如:myswap(3,a+b);但要求它们有确定的值。在调用时将实参的值赋给形参变量(如果形参是数组名,则传递的是数组
7、首地址,而不是变量的值3.在被定义的函数中,必须指定形参的类型。4.实参与形参的类型应一致。实参和形参都是整型,这是合法的。如果实参为整型,形参为实型,或者相反,则发生“类型不匹配”的错误。字符型与整型可以互相通用。5.C语言规定,实参变量对形参变量的传递是“值传递”,即单向传递。在内存中,实参单元与形参单元是不同的单元。案例讲解:includemyswap(intx,inty)/*定义有参函数max*/{intz;z=x;x=y;y=z;}main(){inta,b;scanf(”%d,%d”,&a,&b);print
8、f(“before:%d”,a,b);myswap(a,b);printf(“after:%d”,a,b);}程序运行结果:7,8<回车>before:7,8after:7,8老师提问