1、- 1 -2022-6-21知识回顾知识回顾一、函数调用的一般格式一、函数调用的一般格式说明:说明:(1)实参表中列出实际)实参表中列出实际“传递传递”到函数中的参数,参到函数中的参数,参数的数的个数个数、次序次序应当与形参表所列的应当与形参表所列的一致一致,中间用逗,中间用逗号分隔。号分隔。(2)每个实参都是一个)每个实参都是一个有确定值的表达式有确定值的表达式,表达式的,表达式的类型类型必须与对应形参的类型必须与对应形参的类型兼容兼容。(3)如果函数无形参,则实参表也是空的,但)如果函数无形参,则实参表也是空的,但括号仍括号仍要有要有。 函数名函数名 ( 实参表实参表 ) - 2 -202
2、2-6-21知识回顾知识回顾二、二、return 语句语句l功能功能1)返回表达式的值返回表达式的值2)结束被调函数的执行,并将控制转移到主调)结束被调函数的执行,并将控制转移到主调函数的调用处(断点)继续执行函数的调用处(断点)继续执行 。l使用形式使用形式1)不返回值:)不返回值: return ; 2)返回值:)返回值: return 表达式表达式 ; - 3 -2022-6-21知识回顾知识回顾三、函数调用方式三、函数调用方式1、函数、函数表达式表达式2、函数、函数表达式语句表达式语句如:如:c = max ( a , b ) ;如:如:exit ( 1 ) ;- 4 -2022-6-
3、21三、函数调用方式三、函数调用方式 1、函数、函数表达式表达式知识回顾知识回顾函数名函数名 ( 实参表实参表 ) 说明:说明:l要求要求被调函数有确定的返回值被调函数有确定的返回值以便参与表达式以便参与表达式的运算。的运算。l这种调用方式可以出现在程序中任何允许出现这种调用方式可以出现在程序中任何允许出现表达式的场合。表达式的场合。- 5 -2022-6-21三、函数调用方式三、函数调用方式 2、函数、函数表达式语句表达式语句知识回顾知识回顾 函数名函数名 ( 实参表实参表 ) ; 说明:说明:l被调函数无需有返回值被调函数无需有返回值。l主调函数的目的不是得到函数值,而仅仅是要求主调函数的
4、目的不是得到函数值,而仅仅是要求被调函数完成一定的操作,得到某种效果。被调函数完成一定的操作,得到某种效果。例如:在被调函数中显示信息。例如:在被调函数中显示信息。l或者需要由被调函数返回的信息多于一个时,需或者需要由被调函数返回的信息多于一个时,需要用参数将这些信息返回,而不是用返回值。要用参数将这些信息返回,而不是用返回值。- 6 -2022-6-21四、函数的参数传递四、函数的参数传递 1、值传递、值传递l参数形式:参数形式:实参实参用用表达式表达式,形参形参用用变量。变量。2、引用传递(地址传递)、引用传递(地址传递)l参数形式:参数形式:实参实参用用变量变量,形参形参用用引用。引用。
5、知识回顾知识回顾- 7 -2022-6-21C + 程序设计基础程序设计基础第第 1 章章 程序设计概述程序设计概述第第 2 章章 算法及其描述算法及其描述第第 3 章章 基本数据类型与表达式基本数据类型与表达式第第 4 章章 程序结构与流程控制语句程序结构与流程控制语句第第 5 章章 数组数组第第 6 章章 函数函数- 8 -2022-6-21第第 6 章章 函数函数6.1 函数概述函数概述6.2 函数的定义及使用函数的定义及使用6.3 函数调用函数调用6.4 数组作为函数参数数组作为函数参数6.5 变量的作用域和生存期变量的作用域和生存期- 9 -2022-6-21一、问题的提出一、问题的
6、提出 【例例22-6-1】编写一个函数实现下述功能:返回编写一个函数实现下述功能:返回4个单个单精度实数中的最大值。精度实数中的最大值。 6.4 数组作为函数参数数组作为函数参数分析:分析: 函数名函数名max。 函数返回值类型为函数返回值类型为float 。 形式参数个数:形式参数个数:4个。个。 函数体:选择结构函数体:选择结构 。- 10 -2022-6-21【例例22-6-1】编写一个函数实现下述功能:返回编写一个函数实现下述功能:返回4个单个单精度实数中的最大值。精度实数中的最大值。 6.4 数组作为函数参数数组作为函数参数程序分析:程序分析: 执行时需开辟执行时需开辟 4 个个fl
7、oat类型空间。类型空间。 必须使用多个选择结构。必须使用多个选择结构。 如果求如果求100个实数的最大值呢?个实数的最大值呢? 能否利用数组传递大批量数据呢?能否利用数组传递大批量数据呢?值传递值传递- 11 -2022-6-21【例例22-6-1】编写一个函数实现下述功能:返回编写一个函数实现下述功能:返回4个单个单精度实数中的最大值。精度实数中的最大值。 6.4 数组作为函数参数数组作为函数参数 若有若有float a100,且,且已正确赋值,则可使用已正确赋值,则可使用ma=max (a ,100); 求得求得100个实数中的最大值。个实数中的最大值。- 12 -2022-6-21二、
8、使用数组作为形参二、使用数组作为形参定义定义函数的一般格式函数的一般格式6.4 数组作为函数参数数组作为函数参数 返回值类型返回值类型 函数名函数名 ( 形参定义表形参定义表 ) / 函数头函数头 语句序列语句序列 ; / 函数体函数体 return 表达式表达式 ; ( 数组类型数组类型 数组名数组名 ,int 元素个数,其他形参元素个数,其他形参 )- 13 -2022-6-21float max ( float array , int n ) float m=array 0 ; for ( int i=1; in; i+ ) if ( marray i ) m=array i ; ret
9、urn m;【例例22-6-2】使用数组作为形参定义函数的一般格式使用数组作为形参定义函数的一般格式6.4 数组作为函数参数数组作为函数参数函数名函数名形参形参返回值类型返回值类型函数体函数体局部变量局部变量定义定义函数头函数头返回值语句返回值语句- 14 -2022-6-21三、使用数组作为形参三、使用数组作为形参调用调用函数的一般格式函数的一般格式6.4 数组作为函数参数数组作为函数参数函数名函数名 ( 实参数组名,实际元素个数,其他实参实参数组名,实际元素个数,其他实参 )n具体调用方式具体调用方式 1、函数表达式、函数表达式2、函数表达式语句、函数表达式语句void main( ) f
10、loat a 4 = 3,8,11,9 , ma ; ma = max ( a , 4 ) ; coutmax=maendl ;- 15 -2022-6-21四、使用数组作为形参的函数的四、使用数组作为形参的函数的参数传递参数传递l参数形式:参数形式:实参实参用用数组名数组名,形参形参用用数组名数组名 l函数调用时,把实参数组的函数调用时,把实参数组的首地址首地址传递给形参数传递给形参数组,这样两个数组就共同占用同一段内存空间,组,这样两个数组就共同占用同一段内存空间,即即“传地址传地址”。相当于形参数组名通过形实结合。相当于形参数组名通过形实结合成为实参数组的一个成为实参数组的一个别名别名,
11、所以,所以形参数组的改变形参数组的改变直接影响到实参数组直接影响到实参数组。6.4 数组作为函数参数数组作为函数参数双向传递双向传递 :实参实参 形参形参 - 16 -2022-6-21【例例22-6-3】编写一个函数实现下述功能:把数组下标编写一个函数实现下述功能:把数组下标从从 0 到到 n 的元素值置为的元素值置为0。输入输出由主函数完成。输入输出由主函数完成。示范实例示范实例分析:分析: 程序由两个函数构成:程序由两个函数构成:main( ) + clear( ) 。 主调函数主调函数main( ) 里实现输入原数组,调用里实现输入原数组,调用clear( ) 进行处理,并输出改变后的
12、数组。进行处理,并输出改变后的数组。 被调函数被调函数 clear( ) 实现相应元素清实现相应元素清 0 功能,功能,即把相应元素赋值为即把相应元素赋值为0。- 17 -2022-6-21- 18 -2022-6-21a0a1a2a3a4a5a6a7a8a9aij申请变量申请变量12345678910106调用前调用前- 19 -2022-6-2112345a0a1a2a3a4678910a5a6a7a8a9a10i6j调用时调用时arrni600000007返回前返回前- 20 -2022-6-2100000a0a1a2a3a4008910a5a6a7a8a9a10i6jarr6n7i返回
13、后返回后- 21 -2022-6-21【例例22-6-4】编写一个函数实现下述功能:求数组所有编写一个函数实现下述功能:求数组所有元素的和。输入输出由主函数完成。元素的和。输入输出由主函数完成。示范实例示范实例分析:分析: 程序由两个函数构成:程序由两个函数构成:main( ) + sum( ) 。 主调函数主调函数main( )里实现输入原数组,调用里实现输入原数组,调用sum( )进行求和并将和输出。进行求和并将和输出。 被调函数被调函数sum( )实现求数组所有元素和的实现求数组所有元素和的功能,并返回和。功能,并返回和。- 22 -2022-6-21- 23 -2022-6-21【任务
14、任务22-6-1】编程实现:从键盘输入编程实现:从键盘输入10个整数,然后个整数,然后统计并输出其中负数的个数。要求定义并使用计算数统计并输出其中负数的个数。要求定义并使用计算数组中负数个数的函数组中负数个数的函数 int count_n ( int b , int n),输入,输入与输出由主函数完成。与输出由主函数完成。模仿实例模仿实例分析:分析: 程序由两个函数构成:程序由两个函数构成:main( ) + count_n( ) 。 主调函数主调函数main( )里实现输入原数组,调用里实现输入原数组,调用count_n( )进行求负数个数并输出。进行求负数个数并输出。 被调函数被调函数co
15、unt_n( )实现计算具有实现计算具有n个元素的个元素的 数组中负数个数,并返回计算结果。数组中负数个数,并返回计算结果。- 24 -2022-6-21【任务任务22-6-2】分析以下分析以下的运行结果以及的运行结果以及invert函数函数的功能。的功能。模仿实例模仿实例运行结果:运行结果:invert函数的功能:函数的功能: 把把 a 数组元素的值按逆序数组元素的值按逆序重新放置。重新放置。- 25 -2022-6-21【任务任务19-6-3】分析以下的运分析以下的运行结果以及行结果以及isLetter函数和函数和fun函数的功能。函数的功能。模仿实例模仿实例isLetter函数的功能:函
16、数的功能:判断参数判断参数ch是否是字母。若是是否是字母。若是,该函数返回,该函数返回1,否则返回,否则返回0。运行结果:运行结果:fun函数的功能:函数的功能:删除删除str1串中的非字母字符,串中的非字母字符,形成新串形成新串str2, str1串保持不变。串保持不变。- 26 -2022-6-21总结总结数组作为函数参数数组作为函数参数地址传递地址传递1、使用数组作为形参、使用数组作为形参定义定义函数的一般格式函数的一般格式 返回值类型返回值类型 函数名函数名 ( 形参定义表形参定义表 ) / 函数头函数头 语句序列语句序列 ; / 函数体函数体 return 表达式表达式 ; ( 数组
17、类型数组类型 数组名数组名 ,int 元素个数,其他形参元素个数,其他形参 )函数名函数名 ( 实参数组名,实际元素个数,其他实参实参数组名,实际元素个数,其他实参 )2、使用数组作为形参、使用数组作为形参调用调用函数的一般格式函数的一般格式精品课件精品课件!精品课件精品课件!- 29 -2022-6-21作业作业1、复习教材中的相关内容。、复习教材中的相关内容。2、给定一个字符串、给定一个字符串Str_A,输入字符串,输入字符串Str_B,将,将Str_B中中所有出现在所有出现在Str_A中的字符去掉,最终保存在中的字符去掉,最终保存在Str_C,Str_B不变。不变。3、预习实训、预习实训6.2