第1章 计算引论 1
1.1计算机系统 1
1.1.1做算术的机器 1
1.1.2存储程序概念 2
1.1.3系统软件 7
1.1.4图形用户界面 8
1.1.5网络 9
1.1.6 C+++简要历史 9
1.2计算机组织 10
1.2.1计算系统 10
1.2.2存储 11
1.2.3输入和输出 12
1.2.4操作系统 12
1.2.5编程 13
练习题 14
第2章 编程与问题求解——软件工程 16
2.1 C++抢先看 16
2.2编程和问题求解概览 18
2.2.1问题:温度转换 18
2.2.2程序设计 18
2.2.3在C+++中编码 21
2.2.4测试、执行和调试 24
2.2.5维护 26
本章小结 26
自测题 26
练习题 27
编程题 27
第3章 C+中的类型 29
3.1入门示例:放射性衰变 29
3.1.1问题 29
3.1.2对象中心设计 29
3.2类型、文字量、变量及常量 31
3.2.1基本类型 32
3.2.2标识符 35
3.2.3变量 36
3.2.4常量 37
3.3数据表示 39
3.3.1整数 39
3.3.2实数 40
3.3.3字符和字符串 41
3.3.4布尔值 42
本章小结 42
自测题 43
练习题 44
编程题 46
第4章 表达式入门 47
4.1入门示例:爱因斯坦方程 47
4.1.1问题 47
4.1.2对象中心设计 47
4.2数值表达式 50
4.2.1操作符 50
4.2.2类型强制转换 53
4.3赋值表达式 54
4.3.1赋值是一种运算 57
4.3.2快捷赋值 58
4.3.3增量和减量操作 59
4.4输入输出表达式 61
4.4.1 I/O流 61
4.4.2输入表达式 61
4.4.3输出表达式 64
4.4.4输出格式化 66
4.5基本C++函数和库 68
4.5.1库 69
4.5.2数值函数 69
本章小结 71
自测题 73
练习题 75
编程题 81
第5章 控制结构 83
5.1入门示例:空气质量指数(AQI) 83
5.1.1问题 83
5.1.2对象中心设计 84
5.2布尔表达式 86
5.2.1简单布尔表达式 86
5.2.2复合布尔表达式 88
5.2.3操作符优先级 89
5.2.4短路求值 90
5.2.5前置条件和assert()机制 91
5.2.6布尔字符函数 93
5.3示例:数字电路——二进制半加器 93
5.4选择:if语句 95
5.4.1块语句 98
5.4.2示例:二次方程求解程序 99
5.4.3风格 100
5.5重复:for和while语句 102
5.5.1示例:计算阶乘 102
5.5.2处理几个输入值 104
5.5.3重复执行:while语句 106
本章小结 107
自测题 109
练习题 112
编程题 115
第6章 函数和库 120
6.1入门示例:使用表达式的温度转换 120
6.1.1问题:温度转换 120
6.1.2对象中心设计 120
6.2入门示例:使用函数的温度转换 123
6.3程序员定义函数 124
6.3.1函数设计 125
6.3.2函数原型 128
6.3.3调用函数 129
6.3.4局部变量 130
6.3.5函数中的控制结构 131
6.3.6不返回值的函数 132
6.3.7小结 135
6.4函数库简介 136
6.4.1构造库 137
6.4.2在程序中使用库 140
6.4.3翻译库 142
6.4.4对象中心设计:合并函数和库 143
6.4.5使用库的优点 143
6.5数值方法简介 144
6.5.1解方程——二分法 144
6.5.2数值积分——逼近区域的面积 147
6.5.3微分方程的数值解 150
本章小结 153
自测题 155
练习题 156
编程题 158
第7章 使用类 167
7.1入门示例:Internet地址 167
7.1.1问题 168
7.1.2对象中心设计 168
7.2类简介 170
7.2.1数据封装 172
7.2.2封装操作 174
7.3 istream和ostream类 176
7.3.1 istream类 176
7.3.2 ostream类 181
7.3.3格式控制 182
7.4 string类 185
7.4.1声明string对象 185
7.4.2字符串操作 186
7.5 C++complex类 189
7.5.1复数表示 189
7.5.2复数操作 190
7.5.3示例:解二次方程 192
7.5.4应用:交流电路 193
7.6随机数模拟:防护核反应堆 195
7.6.1随机数生成器——Randomint类 196
7.6.2问题 197
7.6.3解决方案 197
7.6.4正态分布 199
本章小结 200
自测题 202
练习题 204
编程题 209
第8章 更多选择控制结构 213
8.1入门示例:再探空气质量指数 213
8.2 if语句深入 215
8.2.1陷阱:悬空else问题 217
8.2.2陷阱:混淆=和== 217
8.3 switch语句 220
8.3.1示例:温度转换 220
8.3.2 switch语句格式 224
8.3.3 break语句 225
8.3.4直通行为 225
8.3.5示例:将工程课程编码转换为名称 227
8.4条件表达式 229
本章小结 231
自测题 234
练习题 235
编程题 239
第9章 更多重复控制结构 242
9.1两个入门示例:求和与计算折旧 242
9.1.1示例:高斯的惩罚——计算求和 242
9.1.2示例2:计算折旧 245
9.2 for循环 248
9.2.1嵌套for循环 251
9.2.2忠告 254
9.2.3无限循环 255
9.3 while循环 257
9.3.1示例:模拟反弹球 258
9.3.2 while语句 259
9.4 do语句 261
9.4.1示例:多少个数字 261
9.4.2后置测试循环 263
9.5输入循环 264
9.5.1运行示例:平均无故障工作时间 264
9.5.2计数方法 265
9.5.3输入循环:哨兵方法 266
9.5.4输入循环:查询方法 271
9.6选择正确的循环 274
本章小结 276
自测题 280
练习题 282
编程题 286
第10章 深入函数 293
10.1两个入门示例:以度为单位显示角度和变换坐标 293
10.1.1示例1:以度为单位显示角度 293
10.1.2示例2:转换坐标 295
10.2深入参数 298
10.2.1值参 299
10.2.2引用参数 300
10.2.3常量引用参数 302
10.2.4使用参数 304
10.3参数用法示例 305
10.3.1自动售货机 305
10.3.2示例2:交换两个变量的值 309
10.3.3示例3:处理IP地址 311
10.4作用域规则 313
10.4.1作用域:标识符的可访问性 314
10.4.2名称冲突 317
10.4.3名称空间 319
10.5递归简介 319
10.5.1示例1:再探阶乘问题 319
10.5.2街道网络 324
10.6内联、重载和模板 326
10.6.1内联函数 327
10.6.2重载函数 329
10.6.3函数模板 330
本章小结 333
自测题 335
练习题 337
编程题 341
第11章 文件和流 344
11.1入门示例:环境数据分析 344
11.1.1问题:处理环境数据文件 344
11.1.2对象中心设计 345
11.2 ifstream和ofstream类 351
11.2.1声明文件流 351
11.2.2基本的文件流操作 352
11.2.3小结 358
11.3其他流特性 358
11.3.1 seekg()、tellg()、seekp()、tellp()方法 359
11.3.2 peek()和putback()方法 363
11.2.2 setstate()方法 365
11.3.4字符串流 368
本章小结 370
自测题 372
练习题 373
编程题 374
第12章 数组和vector类模板 378
12.1入门示例:质量控制 378
12.1.1问题:平均故障时间 378
12.1.2对象中心设计 379
12.2 C风格数组 383
12.2.1数组初始化 385
12.2.2下标操作 387
12.2.3数组处理函数 387
12.2.4 typedef 388
12.2.5警告/数组的限制 388
12.2.6现代替代品:valarray〈T〉和vector〈T〉 390
12.3排序 391
12.3.1简单选择排序 391
12.3.2其他排序 393
12.4搜索 393
12.4.1线性搜索 393
12.4.2二叉搜索 394
12.5示例:搜索化学数据库 395
12.5.1问题 395
12.5.2解决方案 395
12.6 vector 〈T〉类模板 400
12.6.1函数模板快速概览 400
12.6.2 vector〈T〉类模板 400
12.7标准模板库概览 407
12.7.1 STL的组织 407
本章小结 410
自测题 411
练习题 414
编程题 419
第13章 多维数组和向量 422
13.1入门示例:里程图 422
13.1.1问题 422
13.1.2对象中心设计 422
13.2多维数组 425
13.2.1定义二维数组操作 427
13.2.2高维数组 428
13.3应用:海洋数据分析 431
13.4矩阵处理 435
13.4.1矩阵运算 435
13.4.2示例:产品成本 436
13.5线性系统和电路 438
13.5.1问题:求电路中的电流 439
13.5.2解决方案 439
13.5.3高斯消元法 441
13.6多维vector〈T〉对象 442
13.6.1二维vector〈T〉对象 442
13.6.2二维vector〈T〉操作 444
13.6.3基于vector〈T〉的矩阵 445
本章小结 445
自测题 447
练习题 449
编程题 452
第14章 构建类 462
14.1入门示例:建立温度模型 462
14.1.1创建新类型 463
14.2设计类 465
14.2.1外部和内部观点 465
14.2.2 Temperature类的操作 466
14.2.3 Temperature类的数据 467
14.3实现类 467
14.3.1类数据成员 467
14.3.2类操作——函数成员 469
14.3.3重载操作符 482
14.4其他类特性 488
14.4.1友元函数 488
14.4.2条件编译和类“包装器” 490
本章小结 491
自测题 493
练习题 494
编程题 495
第15章 指针和链表结构 497
15.1指针和间接访问 497
15.1.1声明和初始化指针 498
15.1.2基本指针操作 500
15.2运行时数组 507
15.2.1 new操作 507
15.2.2 delete操作 510
15.3链表简介 511
15.3.1链表是什么 512
15.3.2链表类 513
15.4 STL list〈T〉类模板 514
15.4.1一些list〈T〉操作 514
15.4.2应用:Internet网关 516
15.4.3算法效率 519
15.5指针和命令行参数 521
15.5.1 main函数的参数 521
15.5.2示例:平方根计算器 523
本章小结 525
自测题 527
练习题 528
编程题 532
第16章 数据结构 535
16.1入门示例:整数的二进制表示——栈 535
16.1.1问题:显示数值的二进制表示 535
16.1.2 stack容器 536
16.1.3 stack〈T〉适配器 541
16.1.4 stack〈T〉方法 542
16.2再论递归 542
16.3队列、双端队列和优先队列 546
16.3.1队列的应用 546
16.3.2 queue〈T〉适配器 547
16.3.3 deque〈T〉容器 548
16.3.4 priority_queue〈T〉适配器 548
16.4树简介 550
16.4.1树的术语和示例 552
16.4.1二叉树示例 553
16.4.3实现二叉树 555
16.4.4二叉搜索树 556
16.4.5树的遍历 557
16.4.6构造BST 560
16.4.7 STL中的树 560
本章小结 560
自测题 561
练习题 564
编程题 566
自测题答案 568
附录A ASCII字符编码 589
附录B C++关键字 593
附录C C++操作符 595
附录D 其他C++特征 597