C语言程序设计(最新版)精品PPT课件第6章.ppt

上传人:牧羊曲112 文档编号:2139283 上传时间:2023-01-17 格式:PPT 页数:34 大小:404.50KB
返回 下载 相关 举报
C语言程序设计(最新版)精品PPT课件第6章.ppt_第1页
第1页 / 共34页
C语言程序设计(最新版)精品PPT课件第6章.ppt_第2页
第2页 / 共34页
C语言程序设计(最新版)精品PPT课件第6章.ppt_第3页
第3页 / 共34页
C语言程序设计(最新版)精品PPT课件第6章.ppt_第4页
第4页 / 共34页
C语言程序设计(最新版)精品PPT课件第6章.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《C语言程序设计(最新版)精品PPT课件第6章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计(最新版)精品PPT课件第6章.ppt(34页珍藏版)》请在三一办公上搜索。

1、第六章 函数,学习目标,用函数处理简单模块化问题。用函数处理数组中的模块化问题。函数的嵌套和递归调用。变量的作用域和生存期。,学一学,函数的使用步骤为:先声明、再定义,然后才能调用。,学一学,函数声明的一般格式:类型标识符 函数名(形式参数列表);函数定义的一般格式:类型标识符 函数名(形式参数列表)声明部分 语句部分,学一学,调用没有返回值的函数:函数名(实参列表);其中,“实参列表”中的参数称为实际参数,简称为实参。调用有返回值的函数时,有以下3种方式:把函数返回值赋给调用函数中的某个变量,即 变量=函数名(实参列表);函数出现在一个表达式中参与运算,这种表达式称为函数表达式。函数调用作为

2、一个函数的实参,实质上也是函数表达式调用的一种,因为函数的参数本来就要求是表达式形式。,试一试,问题6.1 请在屏幕上输出二行15个“*”的图案,如下所示:*,试一试,问题6.2 拓展问题6.1,输出3行“*”,第一行3个,以后每增加1行增加3个“*”,输出图形如下:*,试一试,问题6.3 请编写一个求和函数,从键盘上输入两个数据,输出两数之和。,试一试,问题6.4 从键盘上输入三个同学的身高,通过调用函数,输出最高的同学的身高。,练一练,拓展问题6.3,分别编写函数,求2个数的加、减、乘、除及余数。,试一试,问题6.5 大运会期间,在班级挑选了10名志愿者并对其进行了培训,其中4名志愿者用于

3、场馆服务,请问要从10名志愿者中选出4名,有多少种方式?,练一练,编写一个函数,求x的y次方,在主函数中输入x,y的值,输出结果。编写一个函数,判断一个数是否为素数,如果是,返回值为1,否则返回值为0。在主函数中调用自定义函数,输出2-100间所有的素数。,相关知识点,1函数使用的步骤 函数声明:被调用的函数需先声明后调用。但若定义位于调用前面,可省掉声明。为统一或标准化起见,一般将自定义的所有函数都在程序前面予以声明。函数定义:用C语句或调用其他函数实现它的功能。函数调用。,相关知识点,2函数的形参与实参 在函数定义时说明的参数叫做形参,在函数调用时使用的参数叫做实参。在函数调用时,将实参的

4、值复制一份,传递给形参,这种参数的传递方式称为值传递。值传递是单向的,只能从实参向形参传递,而不能由形参传回实参。实参与形参占用不同的内存单元,即使同名也互不影响。,相关知识点,3、函数返回值用return语句实现,格式为:return();return语句的执行过程是先计算表达式的值,再将计算的结果返回给主调函数。,学一学,数组元素做函数的实参:数组元素做函数的实参,与其他同类型普通变量做实参并没有区别,在发生函数调用时,把数组元素的值传送给形参,实现单向值传递。其调用方式同普通变量一样。,试一试,问题6.6 从键盘输入一串字符,编写一个函数,统计字符串中小写字母的个数。,练一练,学院举行数

5、据库大赛,有10名同学参赛,从键盘上输入每个同学的比赛成绩(百分制),编写函数,输出对应的1、2、3等奖(假定:90分以上为1等奖,8090分之间为2等奖,6080分之间为3等奖)。提示:将每个同学的参赛成绩作为函数的实参。在函数中构造一个形参,对每个形参进行判断,如果大于90分,返回值1;如果大于等于80分且小于90分,返回值2;如果大于等于60分且小于80分,返回值3。在主函数中,调用函数根据返回值分别输出1、2、3等奖。,学一学,1数组名做函数的实参与形参数组名做函数参数时,既可以是形参,也可以做实参,要求形参和对应的实参都必须是类型相同的数组(或指向同类型数组的指针变量),并且都必须有

6、明确的数组定义。2地址传递数组名不但代表数组元素的共同名字,而且代表数组的首地址,即数组中第一个元素的地址,所以数组名做参数传递时,传递给形参的是实参数组的首地址。换句话说,采用的不是“值传递”而是“地址传递”,即把实参的地址传递给形参。,试一试,问题6.7 学校举行知识竞赛,有10个学生参赛,请编写一个函数,求平均分。,试一试,问题6.8 某系要选拔身高较高的同学,有N名同学参加选拔,请你将身高输入电脑,编写函数将身高按从低到高进行排序,并且输出排序后的结果。,练一练,拓展问题6.6,使用数组名做函数的实参和形参,实现问题6.6中求字符串中字符的 个数。拓展问题6.7,分别编写两个函数,求1

7、0个参赛学生中最高分和最低分,在主函数中调用两个最高分和最低分函数,并输出。编写函数实现从键盘上输入两个字符串。,试一试,问题6.9 拓展问题6.8,参加选拔的学生中有一人退出了。请输入这个学生的身高,将这个同学的身高从排好序的数组中删除。,想一想,拓展问题6.8,修改fnDelete函数,加入判断功能,当要删除的数在数组中不存在时,返回0,否则,从数组中删除该数后返回1。拓展问题6.8,后来又来了一个同学参加身高选拔,请将这个同学的身高插入到已经排好序的队伍当中,编写函数实现这一过程(可参考第5章的问题5.6)。编写一个综合的程序,使之能够具有增加、删除、排序、查找等功能,并可选择性地多次操

8、作?,相关知识点,1数组做函数的参数的两种方式 数组元素做函数的实参。数组名做函数的实参和形参。2值传递与地址传递,学一学,1函数的嵌套 就函数定义而言,C语言不支持函数的嵌套定义,即在定义一个函数时不能在函数体内再定义另一个函数,因此,所有的函数定义都是平行的。但就函数调用来说,C语言支持嵌套的函数调用。函数的嵌套调用是指,在执行被调用函数时,被调用函数又调用了其他函数。2函数的递归 函数的递归调用是指,一个函数在它的函数体内,直接或间接地调用该函数本身,能够递归调用的函数是一种递归函数。显然,递归调用是嵌套调用的特例。,试一试,问题6.10 输入两个数,编写函数,分别求该两数的最大公约数和

9、最小公倍数,在主函数中输入两个数,调用函数,输出公倍数和公约数。,试一试,问题6.11 有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁。问第4个人多少岁,他说比第3个人大2岁。问第3个人多少岁,他说比第2个人大2岁。问第2个人多少岁,他说比第1个人大2岁。问第1个人多少岁,他说是10岁。请问第5个人多少岁。,练一练,3个同学进行踢毽子比赛,编写一个函数,求出踢的个数最多和最少的差。提示:分别编写2个函数求3个数的最大和最小值。然后再编写一个函数,调用最大值和最小值函数求差,将求差的结果返回。利用递归求n!。提示:n!可以写成递归公式。,学一学,1内部变量与外部变量 变量必须先定义后使

10、用。变量的定义可以在函数内部、函数外部及复合语句的内部。如果变量定义在某函数或复合语句内部,则称该变量为内部变量(也称为局部变量);如果变量的定义在所有函数外部,则称该变量为外部变量(也称为全局变量)。局部变量只在本函数范围内有效,即局部变量的作用域仅仅局限于定义它的函数内;全局变量的作用域是从它定义的位置开始到本源文件的结束,即位于全局变量的定义后面的所有函数都可以使用此变量。,学一学,2动态存储变量、静态存储变量及寄存器变量 动态存储变量(也称自动类型变量)是指那些当程序的流程转到函数时才开辟内存单元,执行结束后又立即被释放的变量。定义方式为:auto 数据类型 变量名 静态存储变量则是指

11、在整个程序运行期间分配固定存储空间的变量。定义方式为:static 数据类型 变量名 寄存器变量只能出现在函数内部,寄存器变量的值存放在寄存器中(寄存器被认为是一种超高速的存储器),对这种变量的存取速度很快,因此寄存器变量主要用来存放循环变量,以提高程序的执行速度。定义方式为:register 数据类型 变量名,试一试,问题6.12 分析以下程序,指明哪些是内部变量,哪些是外部变量?#include stdio.hint iA=100,iB=10;/*定义外部变量*/void fnSum()int iC;/*定义内部变量*/iC=iA+iB;printf(%d,iC);void main()int iA=1,iC;/*定义内部变量*/iC=iA+iB;printf(%d,iC);fnSum();,试一试,问题6.13 输入长方体的长(L),宽(W),高(H),写一个函数求长方体体积及正、侧、顶三个面的面积,并在主函数中输出。,练一练,使用静态变量,编写一个函数,计算n!(n从键盘上输入)。提示:n!=(n1)!n,因此,可以定义一个静态变量,用来保存(n1)!的值。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号