C语言教案-第二周.docVIP

  • 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)

1亿VIP精品文档

相关文档