- 14
- 0
- 约8.77千字
- 约 5页
- 2016-10-15 发布于贵州
- 举报
C语言教案-第二周
第十二节 函数
1:通过本节课学习,使学生理解函数的嵌套是什么并能够调用,学习局部变量和全局变量。
1.1学习目的:
1.理解函数的嵌套调用
2.理解数组作为函数参数
3.灵活使用局部变量和全局变量
1.2学习内容:
1.函数的嵌套调用
2.数组作为函数参数
3.局部变量与全局变量
1.3学习重点:
局部变量与全局变量的应用
1.4教学方法:
讲授法、举例
1.5学习方法:
练习、总结
1.6学习时间
第十八周
2:回顾上一节: [10分钟]
举例:实参与形参
3:课程知识点讲解:
具体知识点1:函数的嵌套调用 [ 25分钟]
知识讲解:函数的嵌套调用
案例讲解:
计算s=22!+32!。
编程分析:可用两个函数,实现求解。一个是用来计算平方值的函数f1,另一个是用来计算阶乘值的函数f2。主函数先调f1计算出平方值,再在f1中以平方值为实参,调用 f2计算其阶乘值,然后返回f1,再返回主函数,在循环程序中计算累加和。程序如下:
long f1(int p) /*定义求平方值的函数*/
{ int k;
long r;
long f2(int);
k=p*p;
r=f2(k);
return r; }
long f2(int q) /*定义求阶乘值的函数*/
{ long c=1;
int i;
for(i=1;i=q;i++)
c=c*i;
return c; }
main() /*主函数*/
{ int i;
long s=0;
for (i=2;i=3;i++)
s=s+f1(i); /*调用函数,进行累加,参数为i*/
printf(\ns=%ld\n,s);
}
程序运行结果:s=362904知识点讲解:数组可以作为函数的参数使用,进行数据传送。数组用作函数参数有两种形式,一种是把数组元素(下标变量)作为实参使用;另一种是把数组名作为函数的形参或实参使用。
数组元素作函数实参 数组元素就是下标变量,它与普通变量并无区别。 因此它作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值传送给形参,实现单向的值传送。数组名作为函数参数案例讲解:
void nzp(int a[8])
{ int i;
printf(\nvalues of array are:\n);
for(i=0;i8;i++)
{ if(a[i]0)a[i]=0;
printf(%d ,a[i]);
}}
main()
{ int b[5],i;
printf(input 5 numbers: );
for(i=0;i5;i++)
scanf(%d,b[i]);
printf(initial values of array b are:\n);
for(i=0;i5;i++)
printf(%d ,b[i]);
nzp(b);
printf(\nlast values of array b are:\n);
for(i=0;i5;i++)
printf(%d ,b[i]);
}
程序运行结果:input 5 numbers: 1 3 5 7 9回车
initial values of array b are:
1 3 5 7 9
values of array are:
1 3 5 7 9 0 292 3522
last values of array b are:
1 3 5 7 9
老师提问:
问题1:按址传递会影响原始变量的值吗?
问题2:按值与按址的区别?
具体知识点3:局部变量与全局变量 [20分钟]
知识点讲解: 局部变量在一个函数内部或复合语句内定义的变量,这些变量只在本函数或本复合语句内才能使用,所有形参都是局部变量。 auto(默认) 所在函数调用结束时,其值自动消失 。
局部变量 register 如不赋初值,取不确定值为初值。
static 所有函数调用结束,其值仍保留。
判断程序运行结果。
main()
{ int a=2,i;
clrscr();
for (i=0;i3;i++)
printf(%4d,f(a));
}
?f (int a)
{ int b=0;static int c=3;
原创力文档

文档评论(0)