江苏省XY中等专业学校2022-2023-1教案    编号:
备课组别
计算机
课程
名称
C语言
所在
年级
三年级
教师
授课教师
授课
系部
授课班级
授课
日期
课题
函数的调用
教学
目标
1、认识函数的调用过程
2、能看懂函数调用的程序
3、培养学生对函数调用的学习
重点
函数调用的方法
难点
函数调用过程对结果的影响
教法
讲授法、案例教学法、讨论法
教学设备
黑板  计算机  网络机房
教学
环节
教学活动内容及组织过程
个案补充
一、导入:
认识函数的调用的过程,了解函数的调用
二、讲授:
定义:一个函数调用另一个函数称为函数调用,其调用者称为主调函数,被调用者称为被调函数。
例如:
int max(int a, int b)
{
int m;
m = (a > b) ? a : b;printf函数有返回值吗
return(m);}
main(  )
{int x = 5, y = 9, z;
z = max(x, y);
printf("较大数=%d \n", z);
}
void max(int a, int b)
{
int m;
m = (a > b) ? a : b;
printf("较大数=%d \n", m);}
main(  )
{
int x = 5, y = 9;
max(x, y);
}
函数实参形参
函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须有返回值。
函数参数的传递方式发生函数调用时,实参与形参的传递方式有两种:1、值传递方式2、地址传递方式。
值传递方式如果参数传递的是数据本身,就称为值传递。 C语言规定,数值只能由实参传递给形参,形参不能反过来传值给实参,即传值是单向的。也就是说,形参的任何变化不会影响到实参。
值传递过程如下:
① 发生函数调用时,系统临时创建形参变量;
② 实参将其数值复制一份给形参变量;
③ 函数调用过程中,形参的任何改变只发生在被调函数内部,不会影响到实参;
④ 当被调函数运行结束返回主调函数时,形参的存储空间被自动释放。
三、应用举例
例1、以下程序试图通过调用swap( )函数,交换主函数中变量x、y的数值。根据程序代码以及运行结果,思考主函数中变量x、y中的数值真的实现交换了吗?为什么? 
void swap(int a, int b)     
{int t;
printf("(2) a=%d, b=%d\n", a, b) ;
t = a;  a = b;  b = t;
printf("(3)a=%d, b=%d\n", a, b) ;}
void main( )
{int x = 2, y = 4;
printf("(1)x=%d, y=%d\n", x, y);
swap(x, y);       
printf("(4)x=%d, y=%d\n", x, y); }
例2、利用递归的方法求一个正整数的逆序数。
#includestdio.h
main()
{long x;
void fun(long );
printf(\n从外部输入一个正整数给x:);
scanf(%ld,&x);
printf(\n%ld的逆序数是:\n,x);
fun(x);
}
void fun(long a)
{if (__________)
printf(%ld,a);
else
{printf(%d,a%10);
______________}}
答案:
a.a<10
b.fun(a/10)
例3、以下程序的功能是计算s=1+请改错。
#include <stdio.h >
float fun(int n)
{
float p=1.0;
p=p*n;
return p;}
void main()
{int i,n;doublen s=0.0;
/***********FOUND***********/
scanf(%d,n);
for(i=1;i<=n;i++)
/***********FOUND***********/
  s=s+1.0/p;
printf(s=%f\n,s)
}
答案:
a. scanf(%d,n);改为scanf(%d,&n);
b. s=s+1.0/p;改为s=s+1.0/fun(i);
函数的调用
一、函数实参形参
二、应用举例
教 后 札 记

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。