第1章 工程问题解决概述 1
1.1 巨大挑 6
1.1.1 近年的工程成就 6
1.1.2 未来的巨大挑战 7
1.1.3 改变工程环境 9
1.2 计算系统 10
1.2.1 计算机硬件 10
1.2.2 计算机软件 11
1.2.3 术语 14
1.3 一种解决工程问题的方法 15
1.4 本章小结 17
第2章 简单的C++程序 21
2.1 基于对象编程概述 22
2.2 程序结构 23
2.3 常量和变量 26
2.3.1 科学计数法 28
2.3.2 数字数据类型 29
2.3.3 布尔数据类型 30
2.3.4 字符数据类型 31
2.3.5 字符串数据 32
2.3.6 符号常量 33
2.4 C++运算符 33
2.4.1 赋值运算符 33
2.4.2 算术运算符 35
2.4.3 运算符的优先级 37
2.4.4 上溢和下溢 39
2.4.5 自增和自减运算符 39
2.4.6 简化的赋值运算符 40
2.5 标准输入和输出 42
2.5.1 cout对象 42
2.5.2 流函数和操纵器 43
2.5.3 cin对象 46
2.6 数值技术:线性插值法 47
2.7 解决实际问题:风洞数据分析 51
2.8 基本函数 54
2.8.1 初等数学函数 55
2.8.2 三角函数 56
2.8.3 双曲线函数 57
2.8.4 字符函数 59
2.9 解决实际问题:速度计算 59
2.10 系统限制 62
2.11 本章小结 63
第3章 控制结构 70
3.1 算法开发 70
3.1.1 自顶向下的设计 71
3.1.2 结构化编程 72
3.1.3 细化的伪代码 72
3.1.4 替代解决方案的判断 74
3.1.5 错误条件 74
3.1.6 生成测试数据 75
3.2 条件表达式 76
3.2.1 关系运算符 76
3.2.2 逻辑运算符 77
3.2.3 优先级和结合原则 77
3.3 选择语句 78
3.3.1 简单的if语句 78
3.3.2 if/else语句 80
3.3.3 switch语句 83
3.4 循环结构 86
3.4.1 while循环 86
3.4.2 do/while循环 88
3.4.3 for循环 89
3.4.4 break和continue语句 92
3.4.5 结构化输入循环 93
3.5 解决实际问题:探空气球 98
3.6 本章小结 102
第4章 处理数据文件 110
4.1 定义文件流 110
4.1.1 stream类继承 111
4.1.2 ifstream类 111
4.1.3 ofstream类 112
4.2 读取数据文件 113
4.2.1 指定数目的记录 114
4.2.2 尾部信号或者标记信号 117
4.2.3 文件末尾 119
4.3 生成数据文件 123
4.4 解决实际问题:数据过滤器——修改HTML文件 125
4.5 错误检查 129
4.6 数值技术:线性建模 132
4.7 解决实际问题:臭氧测量 135
4.8 本章小结 140
第5章 利用函数的模块化编程 145
5.1 模块性 146
5.2 编程人员自定义的函数 148
5.2.1 函数定义 148
5.2.2 函数原型 153
5.3 参数传递 154
5.3.1 通过值调用 155
5.3.2 通过引用调用 157
5.3.3 存储器类和作用域 160
5.4 解决实际问题:计算重心 162
5.5 随机数 166
5.5.1 整数序列 166
5.5.2 浮点序列 170
5.6 解决实际问题:仪器的可靠性 171
5.7 数值技术:多项式的根 178
5.7.1 多项式的根 178
5.7.2 增量搜索技术 180
5.8 解决实际问题:系统的稳定性 182
5.9 数值技术:积分法 190
5.10 递归 195
5.10.1 阶乘计算 195
5.10.2 斐波纳契序列 197
5.11 本章小结 199
第6章 一维数组 208
6.1 数组 209
6.1.1 定义和初始化 209
6.1.2 计算和输出 213
6.1.3 函数参数 215
6.2 统计度量 219
6.2.1 简单分析 219
6.2.2 方差和标准偏差 222
6.3 重新访问函数 224
6.3.1 函数重载 224
6.3.2 函数模板 225
6.3.3 自定义头文件 228
6.4 解决实际问题:语音信号分析 229
6.5 排序算法 235
6.5.1 选择排序 235
6.5.2 快速排序 237
6.6 搜索算法 240
6.6.1 无序列表 240
6.6.2 有序列表 240
6.7.1 C样式字符串的定义和I/O 242
6.7 字符串 242
6.7.2 字符串函数 244
6.8 解决实际问题:回文 246
6.9 string类 250
6.10 vector类 251
6.11 本章小结 256
第7章 二维数组和矩阵 261
7.1 二维数组 261
7.1.1 定义和初始化 262
7.1.2 计算和输出 264
7.1.3 函数参数 267
7.2 解决实际问题:地域导航 270
7.3 重访的vector类 274
7.4 矩阵 276
7.4.1 行列式 277
7.4.2 转置矩阵 277
7.4.3 矩阵的加法和减法 278
7.4.4 矩阵的乘法 279
7.5 数值技术:求解联立方程组 281
7.5.1 图形解释 281
7.5.2 高斯消元法 283
7.6 解决实际问题:电路分析 286
7.7 多维数组 291
7.8 本章小结 293
8.1 利用类进行基于对象的编程 298
第8章 类 298
8.1.1 类的声明 299
8.1.2 类的实现 300
8.2 成员函数 303
8.2.1 构造函数 303
8.2.2 存取函数 305
8.2.3 用于输入和输出的成员函数 307
8.3 单独编译 309
8.4 UnitVector类 313
8.4.1 Private成员函数 315
8.4.2 把类对象作为成员函数的参数 317
8.5 解决实际问题:仿真 319
8.6 本章小结 325
第9章 指针 329
9.1 地址和指针 330
9.1.1 地址运算符 330
9.1.2 指针赋值 332
9.1.3 指针运算 334
9.2 数组元素的指针 337
9.2.1 一维数组 338
9.2.2 字符串 339
9.2.3 指针作为函数参数 341
9.3 动态内存分配 346
9.3.1 new运算符 347
9.3.2 动态分配的数组 348
9.3.3 delete运算符 349
9.4 解决实际问题:地震事件检测 350
9.5 使用new和delete的常见错误 356
9.6 数据结构 357
9.6.1 link类 357
9.6.2 stack类 361
9.6.3 queue类 363
9.7 解决实际问题:文本文件的词汇索引 365
9.8 本章小结 371
第10章 利用类进行编程的其他主题 376
10.1 重载运算符 376
10.1.1 pixel类 378
10.1.2 算术运算符 380
10.1.3 friend函数 384
10.2 解决实际问题:彩色图像处理 388
10.3 继承 394
10.4 虚函数 402
10.5 解决实际问题:迭代的囚犯二难问题 404
10.6 本章小结 413
附录A C++标准库 419
附录B 利用MATLAB绘图表示ASCII文件中的数据 427
B.1 生成数据文件的C++程序 427
B.2 C++程序生成的ASCII数据文件 428
B.3 利用MATLAB生成曲线 428
附录C 练习答案 430