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