- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十二节 函数
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
具体知识点2:数组作为函数参数 [20分钟]
知识点讲解:数组可以作为函数的参数使用,进行数据传送。数组用作函数参数有两种形式,一种是把数组元素(下标变量)作为实参使用;另一种是把数组名作为函数的形参或实参使用。
数组元素作函数实参: 数组元素就是下标变量,它与普通变量并无区别。 因此它作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值传送给形参,实现单向的值传送。
数组名作为函数参数:多维数组也可以作为函数的参数
案例讲解:
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(%4
文档评论(0)