- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 C++函数;一、函数的定义:
1、 格式:
类型修饰符 函数名(形式参数表)函数体
(1)函数根据形式参数分为有参函数和无参函数两类
(2)根据其返回值分为有返回值函数和无返回值函数两类
2、对于有返回值函数,必须用类型修饰符说明返回值类型,且在函数体中用return 表达式;结束函数的运行。
对于无返回值函数,必须用void作类型修饰符,因此无返回值的函数也称为void函数,且在函数体中可用或不用return;来结束函数的运行。;例如:;二、函数的调用:
1、函数调用格式及调用方式:
格式:函数名 (实在参数表)
(1)实参表是一系列用逗号分开的实在参数说明,实参为一表达式(不含操作符的简单表达式或含操作符的复杂表达式),在数量和类型上应与函数定义中的形式参数表一致。
(2)函数调用方式:
A.作为表达式调用,如:area=Area(3);
被调用函数须有返回值
B.作为语句调用,如:Area(3);
不要求被调用函数有返回值,只要求函数完成一定操作。
2、函数的递归调用:
直接或间接地调用自身;三、函数原形与头文件:
1、 函数原形格式:
类型修饰符 函数名(形式参数表);
功能:提供函数调用所需的接口信息
2、在函数定义格式的基础上去掉了函数体;函数原形能提供的信息函数定义也能提供。
3、函数必须先说明后使用。若函数定义于函数调用之前,就不必另行给出函数原形,反之若定义于函数调用之后,则函数原形必须位于对该函数的第一次调用处之前。
;4、在应用系统中,无论函数定义是否已出现在调用之前,都在程序前部给出函数原形。
5、系统提供的标准函数是以目标程序形式提供,其原形分别保存在若干头文件中;头文件也可保存用户自己定义的函数的原形。
6、函数定义与调用位于不同的程序文件中时,定义的函数的原形保存在头文件中。
;四:函数的嵌套和递归;例如:
#include iostream.h
Void f1(int,int);
Void f2(int);
Void main( )
Int a,b;
Cout“a:”;
Cina;
Cout“b:”;
Cinb;
f1(a,a+b);
Coutendla+bendl;
}
;Void f1(int x,int y){
Int m=2;
x*=m;
y++;
f2((x+y)/m);
}
Void f2(int p)
{if (p=100)coutp;}
;以下为a输入23,b输入7时的运行结果:
a: 23
b: 7
38
30
注:为了保证返回后继续正常运行,函数调用过程开始时需要做以下事情:
(1)建立被调用函数的空间。
(2)保存调用函数的运行状态和返回地址。
(3)传递函数。
(4)把程序控制转交给被调用函数。;函数中变量和参数;2.函数的递归
(1)函数A在其函数体中直接包含它自己的调用语句,这种调用称为直接递归调用,函数A称为(直接)递归函数。
(2)函数A在其函数体中间接包含它自己的调用语句,例如A调用函数B,但函数B又调用函数A则函数A称为(间接)递归函数。
从下面的实例中可以进一步了解递归过程的执行机制。
例如:
反序输出:从键盘输入10个int 型数,而后按输入的相反顺序输出它们。
; #includeiostream.h
Void int (int n)
{ int I;
cinI;
if(n1)
inv(n-1);
else
cout“----The result-----”endl;
couti“ “;
}; void main(void)
{
cout“Input 10 integers:”endl;
inv(10);
coutendl;
}
可以有下面的运行结果:
1 2 3 4 5 6 7 8 9 10
------The result-----
10 9 8 7 6 5 4 3 2 1;在许多情况下递归函数易写易读,像著名的Hanoi塔问题的递归函数,其递归程序很短,
也极易理解,但是,如果不用递归方法,程序将十分复杂,很难编写。
小结:在一般情况下,读者应注意:
(1)无论是直接递归还是间接递归都必须保证在有限次调用之后能够结束。
(2)函数调用时系统要付出时间和空间代价,在环境条件相同的情况下,总是非递归程序的效率较高些。;课后练习:
1反序输出一个正整数的各位数值,如输入123应输出321。
2.设计递归函数double fib(int n)用于求出Fibonacci数列的第n项并返回,而后编制主函数对其进行调用。
您可能关注的文档
- 第2章幼儿身体动作的发展与评量.ppt
- 第2章数据类型和运算imagesfile20140802171032703270.ppt.ppt
- 第2章网络硬件设备的选择.ppt-高等教育出版社.ppt
- 第3章DTD规范XML文档.ppt.ppt
- 第3章IP地址-Read.ppt
- 第3章VC++图像编程基础.ppt
- 第3章工程标注.ppt
- 第3章总体设计-广东水利电力职业技术学院.doc
- 第3章网际协议IP.ppt
- 第3章网页元素的添加——文字、图像和链接-本站首页.ppt
- TCSPSTC 134-2024 砒霜冶炼砷及伴生重金属污染地块风险管控与修复集成技术规范.docx
- TCGAPA 039-2024 六安黄鸭规范.docx
- SGO 2024_宫颈癌症最新进展PPT课件(英文版).pptx
- TCSTM 01180.2-2024 锻件缺陷检测 第2部分:涡流法.docx
- 2025零信任的部署现状及未来.docx
- 残疾人居家托养服务照料项目服务方案(技术方案).doc
- 《化学反应与电能》-高中化学示范课PPT课件(含视频).pptx
- TCSTM 01180.3-2024 锻件缺陷检测 第3部分:相控阵超声法.docx
- 2025建设工程红外热成像法检测技术规程.docx
- 2025既有建筑结构内部钢筋射线法检测技术规程.docx
文档评论(0)