第1章 引论 1
1.1 计算机和程序、程序设计语言 1
1.2 C++语言简介 5
1.3 简单的C++程序 6
1.3.1 注释 7
1.3.2 C++程序与格式 8
1.3.3 语法和语义 9
1.3.4 空白字符和程序格式 11
1.3.5 程序的加工和运行 11
1.3.6 基本操作与程序 12
1.3.7 输入和输出 14
1.4 程序开发 17
1.5 学习程序设计 22
1.6 有关C++语言和程序的一些说明 24
习题 27
第2章 数据对象与计算 28
2.1 基本字符、标识符和关键字 28
2.2 基本数据类型 29
2.2.1 整数类型 30
2.2.2 实数类型 34
2.2.3 字符类型和字符串 36
2.3 数据的外部表示、内部表示与输入输出转换 38
2.4 表达式的计算过程 40
2.4.1 表达式求值的顺序问题 40
2.4.2 表达式计算与类型 42
2.5 数学函数库及其使用 45
2.5.1 函数 45
2.5.2 标准库的数学函数 46
2.5.3 函数调用中的类型转换 48
2.6 类型问题(阅读材料) 49
习题 52
第3章 变量和控制结构 53
3.1 语句和复合结构 53
3.2 变量的概念、定义和使用 54
3.2.1 变量的定义 55
3.2.2 变量的使用:取值与赋值 56
3.2.3 与变量有关的几个问题 58
3.3 函数与函数定义(初步) 61
3.3.1 函数定义 62
3.3.2 函数和程序 65
3.3.3 函数与类型 66
3.4 关系表达式、逻辑表达式、条件表达式和bool类型 67
3.4.1 关系表达式和条件表达式 67
3.4.2 复杂条件的清晰描述:逻辑表达式 70
3.5 语句与控制结构 72
3.5.1 条件语句(if语句) 73
3.5.2 循环语句(1):while语句 77
3.5.3 循环语句(2):for语句 80
3.6 程序中的常量 81
3.7 一些常用程序机制 82
3.7.1 增量和减量运算符(++、--) 83
3.7.2 逗号运算符 84
3.7.3 实现二元运算符操作的赋值运算符 84
3.7.4 空语句 85
3.7.5 程序中的另一种注释形式 85
3.8 按位运算和按位运算符(选读) 86
习题 89
第4章 基础程序设计 91
4.1.1 发现循环 92
4.1 基本的循环程序设计 92
4.1.2 典型循环 95
4.1.3 一个程序实例 100
4.1.4 判断函数(谓词) 102
4.2 递归的函数定义 104
4.2.1 递归函数定义 105
4.2.2 循环和递归定义导致的计算过程 106
4.2.3 最大公约数 107
4.3 计算和时间 111
4.4 其他控制结构和控制语句 116
4.4.1 do-while循环结构 116
4.4.2 流程控制语句 117
4.4.3 开关语句 120
4.5.1 输出格式控制 121
4.5 输入和输出 121
4.5.2 输入和控制 124
4.5.3 文件的概念和输入输出 126
4.5.4 字符的输入和输出 132
4.5.5 字符类别 136
4.6 交互式程序的问题 138
4.6.1 由输入控制的循环 138
4.6.2 处理输入错误 140
4.7 程序的测试和排错 143
4.7.1 测试 144
4.7.2 排错 147
习题 149
第5章 处理数据的集合 153
5.1 向量 154
5.1.1 定义向量 154
5.1.2 使用向量 156
5.1.3 有关向量的总结 161
5.2 处理向量的函数 162
5.3 向量与检索 167
5.3.1 分析和认识 168
5.4 string的操作 170
5.4.1 拼接、附加和比较 170
5.4.2 字符和子串 171
5.4.3 输出与输入 172
5.5 数组 173
5.5.1 定义数组变量 173
5.5.2 数组操作 174
5.5.3 数组的存储实现 176
5.5.4 数组作为函数的参数 177
5.5.5 有关数组参数的说明 179
5.6.2 C风格字符串 181
5.6 字符数组与C风格的字符串 181
5.6.1 字符数组 181
5.6.3 处理C风格字符串的程序和函数 184
5.7 两维和多维数组 185
5.7.1 多维数组的定义和初始化 186
5.7.2 多维数组的使用 187
5.7.3 以多维数组为参数的函数 188
5.8 一个程序实例 189
习题 195
第6章 类型和指针 197
6.1 类型问题 197
6.2 内部类型 200
6.2.1 实数类型 200
6.2.2 具有整数值的类型 201
6.3 枚举 203
6.2.3 选择基本类型的建议 203
6.4 结构和类 206
6.4.1 一个问题:学生成绩评定 206
6.4.2 struct的概念和定义 207
6.4.3 struct变量的使用 209
6.4.4 结构与函数 209
6.5 程序实例:学生成绩总评 211
6.5.1 读入循环和辅助函数 212
6.5.2 输出和主函数 214
6.5.3 字符式直方图 215
6.5.4 字符式直方图程序的改进 217
6.5.5 程序的重整 218
6.6 指针 220
6.6.1 指针变量的定义和使用 221
6.6.2 指针与函数 225
6.6.3 指针与数组 227
6.6.4 字符指针 232
6.6.5 命令行参数的处理 235
6.6.6 多维数组作为函数参数 238
6.7 类型同义词(typedef) 240
6.8 指向函数的指针 240
6.8.1 函数指针的定义和使用 241
6.8.2 函数指针作为函数的参数 242
6.8.3 数值积分函数 244
习题 246
第7章 C++程序结构 249
7.1 程序的基层组织——函数抽象 249
7.1.1 函数 250
7.1.2 程序功能的函数分解 252
7.1.3 有关函数的两种观点 254
7.1.4 函数原型 258
7.1.5 带默认值的参数 259
7.1.6 函数重载 260
7.2 基本程序结构,作用域与生存期 262
7.2.1 外部定义的变量 262
7.2.2 作用域和生存期 264
7.2.3 变量定义的嵌套 266
7.2.4 静态局部变量 267
7.2.5 变量的初始化 268
7.2.6 常变量 269
7.2.7 引用变量 270
7.3 程序加工和预处理 270
7.3.1 文件包含 271
7.3.2 宏定义和宏替换 271
7.3.3 条件命令 272
7.4 分别编译、分块开发和源程序组织 273
7.4.1 实例研究:学生成绩评定 274
7.4.2 源程序分块技术 278
7.4.3 防止重复包含 281
7.5 全局作用域与名字空间 281
7.5.1 标准库和名字空间的使用 282
7.5.2 使用声明 283
7.5.3 名字空间的定义 284
7.6 错误处理 286
7.6.1 朴素处理方式及其问题 287
7.6.2 处理复杂的输入格式 292
7.6.3 异常和异常处理 295
7.7 程序的功能参数和初始化 298
7.7.1 交互式初始化方式 300
7.7.2 通过命令行参数方式 300
7.7.3 采用初始化文件方式 302
7.8 程序开发 303
7.9 动态存储管理 304
习题 307
第8章 类型程序设计 309
8.1 一个有理数类型 309
8.1.1 访问控制 310
8.1.2 初始化与构造函数 311
8.1.3 复制和赋值 313
8.1.4 各种运算 315
8.1.5 输入和输出 318
8.1.6 补充和整理 320
8.1.7 类定义的程序组织 322
8.2 定义类型 325
8.2.1 枚举(enum) 325
8.2.2 结构(struct) 326
8.2.3 类(class) 327
8.3 一个随机数类 334
8.4 一个向量类 337
8.4.1 界面 337
8.4.2 数据表示和构造函数 338
8.4.3 完成的类 342
8.4.4 修改设计:能改变大小的向量 343
习题 349
第9章 模板和标准模板库 351
9.1 类模板 351
9.1.1 类模板的定义 352
9.1.2 构造函数和赋值 353
9.1.3 类模板的使用和实例化 354
9.1.4 多参数类模板和非类型参数 355
9.2.1 一个简单例子 357
9.2 函数模板 357
9.2.2 类模板FVec的输出运算符 358
9.3 容器和迭代器 359
9.3.1 标准库map类型 359
9.3.2 容器和迭代器 361
9.4 标准算法 365
9.4.1 装填和生成(fill和generate) 365
9.4.2 复制和转换(copy和transform) 367
9.4.3 排序(sort) 370
9.4.4 操作每个元素(for_each) 373
9.5 函数对象 373
9.5.1 函数对象的例子 374
9.5.2 实现算术运算的函数对象类 376
9.5.3 谓词和实现逻辑运算的函数对象类 377
9.5.4 约束器 377
9.6.1 查找和计数(find和count) 378
9.6 另一些常用算法 378
9.6.2 替换(replace) 380
9.6.3 删除和去除重复(remove和unique) 381
9.6.4 相等和不匹配(equal和mismatch) 383
9.6.5 各种值交换(swap) 384
9.6.6 标准算法汇总 385
9.6.7 自定义算法 388
9.7 标准容器map的比较准则 389
习题 390
第10章 对进一步学习的建议 392
附录一 C++语言基本元素 396
附录二 C++语言结构 401
附录三 C++标准库 407
附录四 C++语言系统及其使用 416