导图社区 大学c加加第5章问题的模块化求解
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。这是本人花了三个小时整理出来的问题的模块化求解,喜欢的小伙伴可以点个赞哦!
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
问题的模块化求解
5.1模块化程序设计
1.函数概念
能完成一定功能,具有名字的程序段
2.模块化程序的组成
1.声明非main函数
2.定义main函数
2和3的定义中可以包含对其它函数的调用
3.定义其他函数
3.函数的分类
1.库函数(标准函数)
#include<函数库名>
2.自定义函数
5.2函数的定义和声明
5.2.1函数定义
1.函数组成结构
1.头部
返回值类型
函数名称
各个形参类型和名称
2.{函数体}
2.特殊形式的函数
无参函数
定义中的圆括号为空
空类型函数
无返回值
类型名改为void
空函数
函数体为空
预留给将来实现功能的模块
5.2.2函数声明
自己定义的函数调用之前先定义声明
声明和定义的函数除形参外,其他各个部分必须相同
先定义后调用可不必声明,习惯先声明,然后主函数然后定义
这里不理解
5.3函数调用
5.3.1函数的调用格式
<函数名>(<参数列表)>
函数调用形式
语句调用
表达式调用
函数值作为另一个函数的参数
嵌套调用
5.3.2参数的传递方式
值传递
形参改变对实参无影响
地址传递
引用传递
利用引用传递改变被调函数中实参的值
5.3.3为形参指定默认值
有实参,用实参,无实参,用默认值
指定实参,即可在定义中进行,也可在函数原型中进行
有默认值的形参后面无没默认值的形参
5.3.4数组名作为函数参数
一维数组的传递
一次传递一个元素,值传递
用数组名作为形参和实参,一次传递一个数组
二维数组传递
列大小确定,行大小缺省
实际行数和列数使用另外两个整形变量传递
5.3.5结构体变量做函数参数
一一储存各个成员的值,属于值传递
5.8程序设计实例
5.8.1使用递归求斐波那契数列前30项的和
5.8.2求非线性方程的根
5.8.3有趣的数哥德巴赫猜想和孪生素数
5.8.4二分查找法
返回-1表示查找结束
5.7变量的作用域和储存类型
根据作用域分为
5.7.1局部变量
空间的分配和释放为系统临时自动分配释放
复合语句内定义的变量仅仅在复合语句内起作用
5.7.2全局变量
若未被初始化,默认值为0,可以被所有复合语句,函数,类访问
在局部变量领域不起作用
要使用就在变量前加::
始终占用内存,降低程序通用性
全局作用于定义点到源程序结束,此前要用,必须用extern声明
5.7.3变量储存类型
1.c++程序使用的内存区域
程序代码区(存函数代码)
全局数据区(存全局变量和静态数据)
栈区(存局部变量)
堆区 (存动态数据)
2.局部变量的存储方式
变量类型
自动变量
就是局部变量
寄存器变量
无寄存地址,仅仅形参和局部变量可作寄存器变量
静态变量
外部变量
要在其他文件使用全局变量,要用extern说明
全局变量前加static修饰符,变成静态全局变量,仅限本文件使用
变量声明的完整形式
<存储类型><数据类型><变量名>
5.6函数重载
函数重载定义
系统根据实参数据类型自动调换函数
重载函数
c++允许两个或者两个以上函数具有相同函数名
注意:不允许出现只有返回值不同的函数,即不允许通过返回值类型进行重载
5.5内联函数
平方和例子内联函数用了跟没用的区别
定义:函数类型前加关键字inline
增加程序代码换取时间效率
适用于函数体小但频繁使用的函数,有分支循环的语句会当成普通函数
5.4递归函数
递归调用:定义函数时直接或间接调用其自身
例子1:计算n!y=fac(n-1)*n
例子2:汉诺塔问题递归的结束条件是返回n的值为1
递推过程
从未知向已知
回归过程
从已知向未知