第一部分 公共基础知识 1
第1章 数据结构与算法 1
1.1 算法 1
考点1 算法的基本概念 1
1.1.1 算法的基本概念 1
考点2算法复杂度 2
1.1.2 算法复杂度 2
1.2 数据结构的基本概念 2
考点3 数据结构的定义 2
1.2.1 什么是数据结构 2
1.2.2 数据结构的图形表示 3
考点4 线性结构与非线性结构 4
1.2.3 线性结构与非线性结构 4
1.3 线性表及其顺序存储结构 4
1.3.1 线性表的基本概念 4
1.3.2 线性表的顺序存储结构 4
1.4 栈和队列 5
考点5 栈及其基本运算 5
1.4.1 栈及其基本运算 5
1.4.2 队列及其基本运算 5
1.5 线性链表 6
考点6 线性链表的基本概念 6
1.5.1 线性链表的基本概念 6
1.5.2 线性链表的基本运算 7
1.5.3 循环链表及其基本运算 7
1.6 树与二叉树 7
考点7 树与二叉树及其基本性质 7
1.6.1 树的基本概念 7
1.6.2 二叉树及其基本性质 7
1.6.3 二叉树的存储结构 9
考点8 二叉树的遍历 9
1.6.4 二叉树的遍历 9
1.7 查找技术 10
考点9 顺序查找 10
1.7.1 顺序查找 10
考点10 二分法查找 10
1.7.2 二分法查找 10
1.8 排序技术 10
考点11 交换类排序法 10
1.8.1 交换类排序法 10
1.8.2 插入类排序法 11
1.8.3 选择类排序法 11
1.9 经典题解 12
1.10 同步练习 16
1.11 参考答案 18
第2章 程序设计基础 19
2.1 程序设计方法与风格 19
2.2 结构化程序设计 19
考点1 结构化程序设计的原则 19
2.2.1 结构化程序设计的原则 19
2.2.2 结构化程序的基本结构与特点 19
2.2.3 结构化程序设计原则和方法的应用 20
2.3 面向对象的程序设计 20
2.3.1 关于面向对象方法 20
考点2 面向对象方法的基本概念 20
2.3.2 面向对象方法的基本概念 20
2.4 经典题解 21
2.5 同步练习 22
2.6 参考答案 22
第3章 软件工程基础 23
3.1 软件工程与软件生命周期 23
考点1 软件定义与软件特点 23
3.1.1 软件定义与软件特点 23
3.1.2 软件危机与软件工程 24
考点2 软件工程过程与软件生命周期 24
3.1.3 软件工程过程与软件生命周期 24
3.1.4 软件工程的目标与原则 25
3.1.5 软件开发工具与软件开发环境 25
3.2 结构化分析方法 25
3.2.1 需求分析与需求分析方法 25
3.2.2 结构化分析方法 25
3.2.3 软件需求规格说明书 26
3.3 结构化设计方法 26
考点3 软件设计的基本概念 26
3.3.1 软件设计的基本概念 26
3.3.2 概要设计 27
考点4 详细设计 29
3.3.3 详细设计 29
3.4 软件测试 30
考点5 软件测试的目的 30
3.4.1 软件测试的目的 30
3.4.2 软件测试的准则 30
3.4.3 软件测试技术与方法综述 31
考点6 软件测试的实施 31
3.4.4 软件测试的实施 31
3.5 程序的调试 32
考点7 软件调试的基本概念 32
3.5.1 基本概念 32
3.5.2 软件调试方法 32
3.6 经典题解 32
3.7 同步练习 35
3.8 参考答案 36
第4章 数据库设计基础 37
4.1 数据库系统的基本概念 37
考点1 数据、数据库、数据库管理系统 37
4.1.1 数据、数据库、数据库管理系统 37
考点2 数据库系统的发展 38
4.1.2 数据库系统的发展 38
考点3 数据库系统的基本特点 38
4.1.3 数据库系统的基本特点 38
考点4 数据库系统的内部结构体系 39
4.1.4 数据库系统的内部结构体系 39
4.2 数据模型 39
考点5 数据模型的基本概念 39
4.2.1 数据模型的基本概念 39
考点6 E-R模型 39
4.2.2 E-R模型 39
考点7 层次模型 40
4.2.3 层次模型 40
4.2.4 网状模型 40
考点8 关系模型 40
4.2.5 关系模型 40
考点9 关系代数 41
4.3 关系代数 41
4.4 数据库设计与管理 42
考点10 数据库设计概述 42
4.4.1 数据库设计概述 42
4.4.2 数据库设计的需求分析 42
4.4.3 数据库概念设计 42
4.4.4 数据库的逻辑设计 43
4.4.5 数据库的物理设计 43
4.4.6 数据库管理 43
4.5 经典题解 43
4.6 同步练习 45
4.7 参考答案 47
第二部分 C++语言程序设计 48
第1章 C++概述 48
1.1 C++语言 48
考点1 C++语言的发展 48
考点2 C++语言的特点 48
考点3 面向对象程序设计 49
1.2 C++语言的基本符号 49
考点4 C++语言的基本符号 49
1.3 C++语言的词汇 49
考点5 C++语言的词汇 49
1.3.1 关键字 49
1.3.2 标识符 50
1.3.3 字面常量 50
1.3.4 运算符 51
1.3.5 标点符号 52
1.4 C++程序的基本框架 52
考点6 C++程序的基本框架 52
1.4.1 结构化程序设计框架 52
1.4.2 面向对象程序设计框架 52
1.5 C++程序的开发过程 52
考点7 C++程序的开发过程 52
1.6 经典题解 53
1.7 同步练习 53
1.8 参考答案 53
第2章 数据类型、运算符和表达式 54
2.1 C++语言的数据类型 54
考点1 C++的数据类型 54
2.1.1 基本类型 55
2.1.2 基本类型的派生类型 55
2.2 常量 55
考点2 常量定义 55
2.2.1 逻辑常量 55
2.2.2 字符常量 56
2.2.3 整型常量 56
2.2.4 实型常量 57
2.2.5 枚举常量 57
2.3 变量 57
考点3 变量定义与使用方法 57
2.3.1 变量的定义 57
2.3.2 变量的使用方式 58
2.3.3 常变量和符号常量 58
2.4 运算符和表达式 58
2.4.1 运算符和表达式的概念 58
考点4 运算符的种类、运算优先级和结合性 59
2.4.2 运算类型与运算符 59
2.4.3 赋值运算 59
2.4.4 算术运算符和算术表达式 60
2.4.5 关系运算符和关系表达式 61
2.4.6 逻辑运算符和逻辑表达式 61
2.4.7 位运算 61
2.4.8 其他运算 61
2.4.9 优先级和结合性 62
2.5 经典题解 63
2.6 同步练习 64
2.7 参考答案 65
第3章 C++基本语句与控制结构 66
3.1 C++语句 66
考点1 C++的基本语句 66
3.2 顺序结构 67
3.2.1 声明语句 67
3.2.2 表达式语句 68
3.2.3 基本输入输出 68
3.2.4 复合语句和空语句 71
3.3 选择结构 71
考点2 用if语句实现分支结构 71
3.3.1 if语句 71
考点3 用switch语句实现多分支选择结构 73
3.3.2 switch语句 73
3.4 循环结构 73
考点4 用for语句实现循环结构 74
3.4.1 for语句 74
考点5 用while语句实现循环结构 74
3.4.2 while语句 74
考点6 用do...while语句实现循环结构 75
3.4.3 do while语句 75
考点7 分支语句和循环语句的各种嵌套使用 75
3.4.4 循环的嵌套 75
3.5 跳转语句 75
考点8 转向语句(goto,continue,break和return) 75
3.5.1 break语句 75
3.5.2 continue语句 76
3.5.3 return语句 76
3.5.4 goto语句 76
3.6 经典题解 76
3.7 同步练习 81
3.8 参考答案 83
第4章 数组、指针与引用 84
4.1 数组 84
考点1 一维数组的定义、初始化和访问 84
4.1.1 一维数组 84
考点2 二维数组的定义、初始化和访问 85
4.1.2 二维数组 85
考点3 字符串与字符数组 86
4.1.3 字符数组 86
考点4 常用字符串函数 87
4.2 指针 88
考点5 指针 88
4.2.1 指针和地址 88
4.2.2 指针和数组 89
4.2.3 指针数组和函数指针 89
4.3 引用 90
考点6 引用 90
4.4 动态存储分配 90
4.5 链表 91
4.5.1 链表的概念 91
4.5.2 链表类型的定义 91
4.5.3 单链表的常见操作 92
4.6 经典题解 95
4.7 同步练习 99
4.8 参考答案 102
第5章 函数 103
5.1 函数定义 104
考点1 函数的定义方法 104
5.2 函数调用 104
考点2 函数的调用方法 104
5.3 函数原型 105
5.4 函数返回类型 105
考点3 函数的类型和返回值 105
5.5 函数参数 105
考点4 参数的传递方式与默认参数 105
5.5.1 参数的传递方式 105
5.5.2 默认参数 106
5.6 函数重载 107
考点5 函数重载 107
5.7 内联函数 107
考点6 内联函数 107
5.8 递归函数 108
考点7 递归函数 108
5.9 变量的生存周期 108
考点8 变量的作用域和生存周期 108
5.9.1 变量的作用域 108
5.9.2 变量的生存周期 109
5.9.3 变量的存储类型 110
5.10 编译预处理 110
5.10.1 文件包含 110
5.10.2 宏定义 111
5.10.3 条件编译 111
5.11 经典题解 111
5.12 同步练习 115
5.13 参考答案 120
第6章 类和对象 121
6.1 类的定义 121
考点1 类的定义与类成员的访问 121
6.1.1 类的定义 121
6.1.2 类成员的访问控制 122
6.1.3 类的数据成员 122
6.1.4 类的成员函数 122
6.2 对象的定义 123
考点2 对象的定义 123
6.2.1 对象的定义 123
6.2.2 对象的成员 123
6.3 构造函数和析构函数 124
考点3 构造函数和析构函数 124
6.3.1 构造函数和析构函数的定义 124
6.3.2 默认构造函数和默认析构函数 127
6.3.3 拷贝构造函数 127
6.4 自由存储对象 128
6.5 this指针 128
考点4 this指针 128
6.6 静态成员 129
考点5 静态数据成员和静态成员函数 129
6.6.1 静态数据成员 129
6.6.2 静态成员函数 129
6.7 常成员 129
考点6 常对象与常成员函数 129
6.7.1 常对象 129
6.7.2 常数据成员 130
6.7.3 常成员函数 130
6.8 友元 130
考点7 友元函数和友元类 130
6.8.1 友元函数 130
6.8.2 友元类 131
6.9 对象数组 131
考点8 对象数组 131
6.10 成员对象 132
考点9 成员对象 132
6.11 经典题解 132
6.12 同步练习 143
6.13 参考答案 151
第7章 继承和派生 152
7.1 继承与派生 152
7.1.1 基本概念 152
考点1 派生类的定义和访问权限 152
7.1.2 派生类的定义与构成 152
7.2 派生类对基类成员的访问 153
考点2 继承基类的数据成员与成员函数 153
7.3 派生类的构造函数和析构函数 153
7.3.1 派生类的构造函数 153
7.3.2 派生类的析构函数 154
7.4 多继承与虚基类 154
考点3 虚基类 154
7.4.1 多继承中的二义性问题 154
7.4.2 虚基类的定义 154
7.4.3 虚基类的构造函数 155
7.5 子类型关系 155
7.6 虚函数与多态性 156
考点4 虚函数 156
7.6.1 多态性的概念 156
7.6.2 虚函数 156
考点5 基类指针与派生类指针的使用 157
7.6.3 虚析构函数 157
考点6 纯虚函数与抽象类 157
7.6.4 纯虚函数与抽象类 157
7.7 经典题解 157
7.8 同步练习 170
7.9 参考答案 179
第8章 运算符重载 180
8.1 运算符函数与运算符重载 180
考点1 运算符重载 180
8.1.1 运算符重载的概念 180
8.1.2 运算符重载的形式 180
8.2 典型运算符的重载 181
8.2.1 关于分数类fraction 181
8.2.2 重载取负运算符“-” 181
8.2.3 重载加法运算符“+” 182
8.2.4 重载增量运算符“++” 182
8.2.5 重载类型转换符“long” 182
8.2.6 重载赋值运算符“=” 182
8.2.7 重载复合赋值运算符“+=” 182
8.2.8 重载关系运算符“>” 183
8.2.9 重载下标访问运算符“[]” 183
8.2.10 重载流运算符“>>”和“<<” 183
8.3 运算符重载应注意的几个问题 183
8.4 经典题解 183
8.5 同步练习 186
8.6 参考答案 189
第9章 模板 190
9.1 函数模板 190
考点1 函数模板的定义和使用方式 190
9.2 类模板 191
考点2 类模板的定义和使用方式 191
9.3 经典题解 192
9.4 同步练习 195
9.5 参考答案 197
第10章 C++流 198
10.1 C++流的概念 198
考点1 C++流的概念 198
10.1.1 C++流的体系结构 198
10.1.2 预定义流对象 199
10.1.3 提取运算符“>>”和插入运算符“<<” 199
10.1.4 有格式输入输出和无格式输入输出 200
10.1.5 操作符 200
10.2 输入输出的格式控制 200
考点2 输入输出的格式控制 200
10.2.1 默认的输入输出格式 200
10.2.2 格式标志与格式控制 201
10.2.3 输入输出宽度的控制 201
10.2.4 浮点数输出方式的控制 202
10.2.5 输出精度的控制 202
10.2.6 对齐方式的控制 202
10.2.7 小数点处理方式的控制 202
10.2.8 填充字符的控制 203
10.2.9 插入换行符 203
10.2.10 输入输出数制状态的控制 203
10.3 文件流 203
考点3 文件的I/O操作 203
10.3.1 文件流的建立 204
10.3.2 文件流的关闭 205
10.3.3 文件流状态的判别 205
10.3.4 文件流的定位 205
10.3.5 有格式输入输出 205
10.3.6 无格式输入输出 205
10.4 经典题解 207
10.5 同步练习 209
10.6 参考答案 211
第三部分 C++典型算法程序 212
算法1 求最大值、最小值和平均值 212
算法2 累加和累乘 213
算法3 判断某数为素数 215
算法4 判断某数为完全数 215
算法5 排序 218
算法6 查找 220
算法7 求最大公约数 222
算法8 整数的各位分离 223
算法9 数组元素逆置 224
算法10 数组元素按列前移和后移 225
算法11 矩阵的转置 226
算法12 大小写字母转换 228
算法13 统计单词个数 229
算法14 删除字符串中的空格 229
算法15 判断子串 230
算法16 字符串合并 230
算法17 将数字字符移至字符串前部 232
算法18 从字符串中提取数字字符拼成整数 234
第四部分 二级C++真题与模拟 235
真题库试题第1套 235
真题库试题第2套 247
真题库试题第3套 258
真题库试题第1套答案分析 270
真题库试题第2套答案分析 274
真题库试题第3套答案分析 278
参考文献 283