C++程序设计第5章 函数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
出数组中的素数。
例程
完整版ppt
14
5.3.2 数组名作函数参数
1.一维数组作为函数参数
(1)函数定义格式 <类型><函数名>(<类型><数组名>[长度],…) { 函数体}
说明:对于一维数组而言,函数定义中的数组长度可省略。
(2)函数调用格式 函数名(数组名,…)
注意:实参数组名后不能加“[]”。
1.函数调用格式
函数调用的一般格式为: <函数名>(<实参表>)
其中,实参表的一般格式为: <实参1>,<实参2>, …
2.函数的实参
(1)实参为能求值的表达式 (2)实参和形参的类型应兼容
3.函数的三种调用方式
(1)函数调用语句。函数调用语句的一般格式为:
<函数名>(实参表); 此时不要求函数有返回值,只要求函数完成一定的操作。
交换数据后输出。 例程
完整版ppt
9
5.2 函数的嵌套调用和递归调用
5.2.1 函数的嵌套调用
(1)函数不允许嵌套定义:即不允许在函数内再定义函数。 (2)函数可以嵌套调用:即在被调用函数体内又调用另一
个函数。
main函数
a函数
b函数
调用a函数
调用b函数
结束
返回
返回
函数的嵌套调用
【例5.5】 编写C++程序,求组合数 的值。
完整版ppt
6
函数调用方式
(2)函数表达式
函数调用出现在一个表达式中,此时要求函数有确定的返回 值以便参与表达式的运算。
(3)函数参数
函数调用作为一个函数的实参。
【例5.3.1】用自定义函数求三个整数的最大值。 例程
4.函数返回语句return
(1)格式: return <表达式>; 或:return (<表达式>);
例程
cm
n
完整版ppt
10
5.2.2 函数的递归调用
函数递归调用定义:在函数体中出现直接或间接地调用 该函数本身的调用关系称为函数的递归调用。
1.直接递归:在函数f的定义过程中出现调用函数f。 2.间接递归: 在函数f1的定义过程中调用函数f2,而在
函数f2的定义过程中又调用了f1函数。
f函数
f1函数
(2)函数原型说明的作用:
告诉编译程序,函数返回值的类型、参数个数和各参 数类型。
【例5.3.2】用自定义函数求三个整数的最大值。 例程
完整版ppt
8
5.1.4 实参与形参的数据传送
在C++中,实参和形参间数据传送的方式有三种: 值传送、传地址和引用传送。先介绍值传送方式。
值传送过程: (1)调用函数时,先为形参分配存储单元,后将实 参值传递给形参; (2)函数执行过程中均为形参参与运算; (3)函数调用后,形参所对应的存储单元被释放, 实参保持原来的值不变。 【例5.4】 定义变量交换函数swap(),将两个整型变量
(3)递归约束条件: n≥0
例程
完整版ppt
12
递归
3.递归两个阶段
(1)递归阶段:将原问题不断分解为新的子问题,逐渐 从未知向已知推进,最终达到已知的条件,即递归结束条 件,此时递归阶段结束。
(2)回推阶段:从已知的条件出发,按照递归的逆方向, 逐一求值回推,最后达到递归的开始处,结束回推阶段, 从而完成整个递归调用过程。 【例5.7】 用递归法求裴波那契数列的前20个数,要求每行
f2函数
调用f函数 函数的直接递归调用
调用f2函数
调用f1函数
函数的间接递回调用
完整版ppt
11Biblioteka Baidu
递归举例
【例5.6】 用递归法求n!。
分析:用递归方法求n!的公式为:
1
n=0
n!=
1
n=1
n*(n-1)! n>1
在利用递归求值时,必须注意三点:
(1)递归公式: n*(n-1)!
(2)递归结束条件: n=0或1
1.函数的定义格式
函数定义的一般格式为: 〔类型〕<函数名>(<形参表>) {<函数体> }
(1)类型 (2)函数名 (3)形参表:<类型> <形参名1>,<类型> <形参名2>… (4)函数体{}:由一系列语句组成。
空函数的定义格式为: 〔类型〕<函数名>(void){ }
完整版ppt
4
2.函数的形参
(1)函数可以没有形参,则形成无参函数。在定义无参函
数时,形参表应该写成void。
无参函数的定义格式为:
〔类型〕<函数名>(void) {<语句序列> }
【例5.2】 无参函数的实例。 (2)C++对形参的个数没有限制。
例程
(3)必须依次说明每一个参数的数据类型。
完整版ppt
5
5.1.3 函数的调用
完整版ppt
15
一维数组作为函数参数
(3)实参与形参的传送方式:传地址
当数组作为函数参数,在调用函数时,系统并 没有为形参数组重新分配内存空间,而是将实参
完整版ppt
2
5.1 函数的定义和调用
5.1.1 函数的概念
函数概念:具备特定功能的独立程序段。
函数包括标准函数和自定义函数。
【例5.1】 在主函数中调用标准函数sin(x)与自
定义函数f(x)。
例程
通常将调用f(x)的函数(main())称为主调
函数,而将f(x)称为被调函数。
完整版ppt
3
5.1.2 函数的定义
输出4个数。 例程
完整版ppt
13
5.3 数组作函数参数(习题课)
5.3.1 数组元素作函数实参
传送方式:值传送。
【例5.8】定义显示变量值函数print(),用 数组元素作函数实参,输出数组元素值。
例程
【例5.9】定义判素数的函数prime(),用
数组元素作函数实参,判断数组各元素
值是否为素数。若不是素则清0。最后输
第5章 函数
目的与要求 5.1 函数的定义和调用 5.2 函数的嵌套调用和递归调用 5.3 数组作函数参数(习题课) 5.4 变量的存储类型 5.5 内联函数 5.6 具有默认参数值的函数 5.7 函数的重载 本章小结
完整版ppt
1
目的与要求
通过本章学习,应理解函数的概 念,熟练掌握函数的定义和调用方法, 理解函数调用时实参和形参间数据的 传递方法。理解函数递归的概念,初 步掌握递归的使用方法,理解变量的 作用域和存储类型的概念,了解内联 函数与函数重载的概念。
(2)作用: 返回表达式的值,结束函数执行,并将控制转移到调用函 数的地方继续执行。
完整版ppt
7
5.函数的原型说明
在C++程序中,当函数定义在前、函数调用在后时, 程序能被正确编译执行。而当函数调用在前、函数定义 在后时,则应在主调函数中增加对被调函数的原型说明。
(1)函数原型说明的格式:
<类型> <函数名>(<形参表>); 或:<类型> <函数名>(<形参类型说明表>);