《2023年C语言精品讲义第十二周1.pdf》由会员分享,可在线阅读,更多相关《2023年C语言精品讲义第十二周1.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学习必备 欢迎下载 第十二节 函数 1:通过本节课学习,使学生理解函数的嵌套是什么并能够调用,学习局部变量和全局变量。1.1 学习目的:1.理解函数的嵌套调用 2.理解数组作为函数参数 3.灵活使用局部变量和全局变量 1.2 学习内容:1.函数的嵌套调用 2.数组作为函数参数 3.局部变量与全局变量 13 学习重点:局部变量与全局变量的应用 14 教学方法:讲授法、举例 15 学习方法:练习、总结 16 学习时间 第十八周 2:回顾上一节:10 分钟 举例:实参与形参 3:课程知识点讲解:学习必备 欢迎下载 具体知识点 1:函数的嵌套调用 25 分钟 知识讲解:函数的嵌套调用 案例讲解:计算
2、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()/*主函数*/i
3、nt i;long s=0;for(i=2;i=3;i+)s=s+f1(i);/*调用函数,进行累加,参数为 i*/printf(ns=%ldn,s);程序运行结果:s=362904 具体知识点 2:数组作为函数参数 20 分钟 知识点讲解:数组可以作为函数的参数使用,进行数据传送。数组用作函数作为函数参数局部变量与全局变量学习重点局部变量与全局变量的应用识讲解函数的嵌套调用案例讲解定义求平方值的函数定义求阶乘值的函其阶乘值然后返回再返回主函数在循环程序中计算累加和程序如下主函学习必备 欢迎下载 参数有两种形式,一种是把数组元素(下标变量)作为实参使用;另一种是把数组名作为函数的形参或实参使用
4、。数组元素作函数实参:数组元素就是下标变量,它与普通变量并无区别。因此它作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值传送给形参,实现单向的值传送。数组名作为函数参数:多维数组也可以作为函数的参数 案例讲解:void nzp(int a8)int i;printf(nvalues of array are:n);for(i=0;i8;i+)if(ai0)ai=0;printf(%d,ai);main()int b5,i;printf(input 5 numbers:);for(i=0;i5;i+)scanf(%d,&bi);printf(initial va
5、lues of array b are:n);for(i=0;i5;i+)printf(%d,bi);nzp(b);printf(nlast values of array b are:n);for(i=0;i5;i+)printf(%d,bi);程序运行结果: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:按址传递会影响原始变量的值吗?
6、问题 2:按值与按址的区别?具体知识点 3:局部变量与全局变量 20 分钟 知识点讲解:局部变量 作为函数参数局部变量与全局变量学习重点局部变量与全局变量的应用识讲解函数的嵌套调用案例讲解定义求平方值的函数定义求阶乘值的函其阶乘值然后返回再返回主函数在循环程序中计算累加和程序如下主函学习必备 欢迎下载 在一个函数内部或复合语句内定义的变量,这些变量只在本函数或本复合语句内才能使用,所有形参都是局部变量。auto(默认)所在函数调用结束时,其值自动消失。局部变量 register 如不赋初值,取不确定值为初值。static 所有函数调用结束,其值仍保留。案例讲解:判断程序运行结果。main()i
7、nt a=2,i;clrscr();for(i=0;i3;i+)printf(%4d,f(a);f(int a)int b=0;static int c=3;b+;c+;return a+b+c;程序运行结果:7 8 9 程序运行分析:a i b c f(a)2 0 01 4 7 2 1 01 5 8 2 2 01 6 9 知识点讲解:全局变量 10 分钟 一个源文件可以包含一个或若干个函数,在函数内定义的变量是局部变量,而在函数之外定义的变量称为全局变量。全局变量可以为本文件中其他函数共用。extern(默认)允许本源文件中其他函数及其他源文件使用。全局变量 static 只限本源文件中使用
8、。案例讲解:定义两个外部变量,判断程序运行结果。extern int x,y;/*可以省略 int。如果没有此句,编译就会出错*/main()clrscr();printf(x=%d,y=%dn,x,y);x=100,y=200;作为函数参数局部变量与全局变量学习重点局部变量与全局变量的应用识讲解函数的嵌套调用案例讲解定义求平方值的函数定义求阶乘值的函其阶乘值然后返回再返回主函数在循环程序中计算累加和程序如下主函学习必备 欢迎下载 老师提问:问题 1:请举出局部变量和全局变量定义的关键字。4 本节总结 5 分钟 考核点 考核点 1:数组名和数组元素作为参数的异同 考核点 2:全局变量与局部变量
9、的定义及使用 测试题 测试题 1:写一个程序打印出 2 的顺序各次幂。让它打印出 2 的前 30 个幂,看看会出现什么情况。用一个条件为真的循环打印 2 的各次幂,看看会出现什么情况。测试题 2:从键盘输入两个正整数,然后求这两个数的最大公约数。扩展部分:扩展部分 1:变量的存储类型 扩展部分 2:函数的递归调用 学生问题汇总:问题 1:问题 2:作业:习题 1:请到查出银行一年定期存款的利率和 5 年定期存款的利率。假定现在要存入 100元钱,存款到期后立即将利息与本金一起再次存入。请写出程序,计算按每次存一年和按照每次存 5 年,总共存 50 年后两种存款方式的得款总额。对两种情况都每隔
10、5 年输出一次当时的总金额。习题 2:(1)不用函数,直接写一个主程序计算并输出直径为 100 毫米和 150 毫米的金、银、铜、铁、锡球的重量(以 kg 为单位输出)。(2)重新完成上面程序,先定义一个带有两个参数的函数,它能求出直径为 x的比重为 y 的圆球的重量,而后在主程序里调用这个函数完成所需工作。将这样得到的解与不用函数的解比较,比较它们的长度、容易出错的程度。假设现在要求修改所用圆周率的精度,考虑用两种方式写程序的修改难度。(3)请写程序,求出边长为 100 毫米和 150 毫米的金、银、铜、铁、锡立方体的重量。你可以利用前面的程序吗?是否很容易修改前面程序,完成这一计算?比较不用函数的解法和使用函数的解法在易修改和重复使用方面的效用。作为函数参数局部变量与全局变量学习重点局部变量与全局变量的应用识讲解函数的嵌套调用案例讲解定义求平方值的函数定义求阶乘值的函其阶乘值然后返回再返回主函数在循环程序中计算累加和程序如下主函