第1章 绪论 1
1.1 知识点回顾 1
1.1.1 计算机组成 1
1.1.2 程序设计语言 2
1.1.3 程序设计过程 3
1.2 习题解答 5
1.2.1 简答题 5
1.2.2 编程题 12
1.3 进一步拓展 12
1.3.1 计算机为什么采用二进制 12
1.3.2 算法的评价 13
第2章 程序的基本组成 14
2.1 知识点回顾 14
2.1.1 C++程序的基本结构 14
2.1.2 常量与变量 14
2.1.3 数据的输入输出 18
2.1.4 算术运算 18
2.1.5 赋值运算 19
2.2 习题解答 21
2.2.1 简答题 21
2.2.2 程序设计题 27
2.3 进一步拓展 34
2.3.1 “按位与”运算 35
2.3.2 “按位或”运算 37
2.3.3 “按位异或”运算 38
2.3.4 “取反”运算 39
2.3.5 “左移”运算 40
2.3.6 “右移”运算 40
第3章 分支程序设计 43
3.1 知识点回顾 43
3.1.1 关系表达式和逻辑表达式 43
3.1.2 分支语句 44
3.2 习题解答 45
3.2.1 简答题 45
3.2.2 程序设计题 48
第4章 循环程序设计 63
4.1 知识点回顾 63
4.1.1 计数循环 63
4.1.2 while循环 64
4.1.3 do-while循环 64
4.1.4 break和continue语句 65
4.2 习题解答 65
4.2.1 简答题 65
4.2.2 程序设计题 67
4.3 进一步拓展 81
4.3.1 goto语句 81
4.3.2 结构化程序设计 82
4.3.3 位运算的进一步讨论 83
第5章 批量数据处理——数组 84
5.1 知识点回顾 84
5.1.1 一维数组 84
5.1.2 二维数组 85
5.1.3 字符串 86
5.2 习题解答 88
5.2.1 简答题 88
5.2.2 程序设计题 90
5.3 进一步拓展 104
5.3.1 特殊矩阵 104
5.3.2 对称矩阵 105
5.3.3 三角矩阵 105
5.3.4 稀疏矩阵 106
第6章 过程封装——函数 107
6.1 知识点回顾 107
6.1.1 函数的概念 107
6.1.2 函数的定义 107
6.1.3 函数的参数和返回值 108
6.1.4 数组作为函数的参数 108
6.1.5 重载函数 109
6.1.6 函数模板 109
6.1.7 变量的作用域与存储类别 110
6.1.8 递归程序设计 111
6.1.9 C++11的扩展 112
6.2 习题解答 113
6.2.1 简答题 113
6.2.2 程序设计题 117
6.3 进一步拓展 138
6.3.1 模拟计算机程序的运行 138
6.3.2 模拟器的设计 139
第7章 间接访问——指针 144
7.1 知识点回顾 144
7.1.1 指针的概念 144
7.1.2 指针运算与数组 144
7.1.3 指针与动态内存分配 145
7.1.4 字符串的指针表示 146
7.1.5 指针、数组和字符串传递 146
7.1.6 引用与引用传递 147
7.1.7 多级指针与指向函数的指针 148
7.1.8 main函数的参数 149
7.1.9 lambda表达式 149
7.2 习题解答 150
7.2.1 简答题 150
7.2.2 程序设计题 151
第8章 数据封装——结构体 161
8.1 知识点回顾 161
8.1.1 记录的概念 161
8.1.2 结构体变量的使用 162
8.1.3 结构体作为函数的参数 163
8.1.4 链表 163
8.2 习题解答 164
8.2.1 简答题 164
8.2.2 程序设计题 165
8.3 进一步拓展 174
第9章 模块化开发 177
9.1 知识点回顾 177
9.1.1 自顶向下分解 177
9.1.2 模块划分 177
9.1.3 设计自己的库 177
9.2 习题解答 178
9.2.1 简答题 178
9.2.2 程序设计题 179
9.3 进一步拓展 195
9.3.1 软件危机 195
9.3.2 软件工程 196
第10章 创建新的类型 199
10.1 知识点回顾 199
10.1.1 面向对象的思想 199
10.1.2 面向对象程序设计的特点 199
10.1.3 类的定义 200
10.1.4 对象的使用 201
10.1.5 对象的构造与析构 201
10.1.6 C++11对构造的扩展 202
10.1.7 常量对象和常量成员函数 204
10.1.8 常量数据成员 205
10.1.9 静态数据成员与静态成员函数 205
10.1.10 友元 206
10.2 习题解答 206
10.2.1 简答题 206
10.2.2 程序设计题 209
10.3 进一步拓展 244
10.3.1 不要随便改变复制构造的意义 244
10.3.2 计算机模拟程序 245
第11章 运算符重载 249
11.1 知识点回顾 249
11.1.1 什么是运算符重载 249
11.1.2 运算符重载的方法 249
11.1.3 自定义类型转换函数 250
11.2 习题解答 251
11.2.1 简答题 251
11.2.2 程序设计题 255
11.3 进一步拓展 277
第12章 组合与继承 278
12.1 知识点回顾 278
12.1.1 组合 278
12.1.2 继承 278
12.1.3 虚函数与运行时的多态性 280
12.1.4 虚析构函数 280
12.1.5 纯虚函数和抽象类 281
12.2 习题解答 281
12.2.1 简答题 281
12.2.2 程序设计题 284
12.3 进一步拓展 308
12.3.1 避免随意地继承 308
12.3.2 多态性与switch语句 308
第13章 泛型机制——模板 310
13.1 知识点回顾 310
13.1.1 类模板的定义 310
13.1.2 类模板的实例化 310
13.1.3 类模板的友元 311
13.2 习题解答 312
13.2.1 简答题 312
13.2.2 程序设计题 313
第14章 输入输出与文件 320
14.1 知识点回顾 320
14.1.1 基于控制台的输入输出 321
14.1.2 基于文件的输入输出 323
14.2 习题解答 326
14.2.1 简答题 326
14.2.2 程序设计题 327
第15章 异常处理 351
15.1 知识点回顾 351
15.1.1 异常抛出 351
15.1.2 异常检测和处理 351
15.1.3 异常规格声明 352
15.2 习题解答 352
15.2.1 简答题 352
15.2.2 程序设计题 354
第16章 容器和迭代器 358
16.1 知识点回顾 358
16.1.1 容器 358
16.1.2 迭代器 358
16.2 习题解答 359
16.2.1 简答题 359
16.2.2 程序设计题 359
参考文献 362