第一部分 基本概念 1
第1章 计算机系统初步知识 1
1.1 引言 2
1.2 计算机基础知识概论 2
1.2.1 计算机与信息社会 2
1.2.2 电子计算机的发展 3
1.2.3 电子计算机的特点 4
1.3 计算机的基本组成 5
1.4 计算机中信息的表示 6
1.4.1 进位计数制 6
1.4.2 计算机采用二进制的原因 8
1.4.3 不同计数制之间的转换 8
1.4.4 信息单位及机器数 10
1.4.5 字符的表示 12
1.5 计算机的工作过程 12
1.6 计算机系统的组成 14
1.7 计算机系统的软件 14
1.8 内容回顾 15
习题1 16
第2章 软件开发方法 17
2.1 引言 18
2.2 软件开发方法 18
2.3 需求说明 18
2.4 分析 18
2.5 算法的设计与表示 19
2.5.1 伪代码 19
2.5.2 伪代码书写规则 23
2.5.3 自顶向下对算法进行求精 24
2.5.4 流程图 31
2.6 实现 34
2.7 测试和验证 34
2.8 程序文档 35
2.9 程序举例:求解二次方程 35
2.10 内容回顾 39
习题2 39
第二部分 初级程序设计 41
第3章 C++编程基础 41
3.1 引言 42
3.2 一个完整的C++程序 42
3.3 字符集和标记符 44
3.3.1 保留字 44
3.3.2 标识符 44
3.3.3 常量 45
3.3.4 标点符号 47
3.3.5 操作符 47
3.4 C++程序结构 48
3.4.1 注释 48
3.4.2 预处理指令 48
3.4.3 数据类型和变量定义 49
3.4.4 初始化 50
3.4.5 常量定义 51
3.4.6 语句 51
3.4.7 复合语句 52
3.5 初谈函数 52
3.6 几种基本的C++语句 53
3.6.1 算术赋值语句 53
3.6.2 输出语句 55
3.6.3 输入语句 55
3.7 C++源程序文件 56
3.7.1 输入源程序 56
3.7.2 关于编程风格 57
3.8 程序举例:将高度和重量的单位转化成国际单位制的单位 58
3.9 调试程序 60
3.9.1 调试语法错误 60
3.9.2 调试警告性错误 62
3.9.3 调试运行错误 62
3.9.4 调试设计错误 63
3.10 内容回顾 64
习题3 64
第4章 算术运算 69
4.1 引言 70
4.2 算术运算符 70
4.3 算术运算符和算术表达式的优先级 71
4.4 自增和自减操作符 72
4.5 算术赋值表达式 74
4.6 复合赋值操作符 75
4.7 算术表达式的类型 76
4.8 数学函数库 78
4.9 程序举例:计算两点间的距离 79
4.10 算术赋值表达式语句 81
4.11 内容回顾 82
习题4 82
第5章 简单选择和循环结构 87
5.1 引言 88
5.2 简单选择结构 88
5.2.1 选择语句 88
5.2.2 关系操作符和简单条件表达式 89
5.2.3 if语句实例 89
5.2.4 算术运算符与关系操作符的优先级 92
5.2.5 if语句的嵌套和多路选择结构 93
5.3 循环控制结构 96
5.3.1 循环语句 96
5.3.2 用while语句实现循环 97
5.4 if和while语句的书写规则 100
5.5 结构化编程 102
5.6 程序举例:求解二次方程 103
5.7 内容回顾 107
习题5 107
第6章 模块化编程和函数 113
6.1 引言 114
6.2 程序举例:绘制几何图形的模块化程序(A) 114
6.3 模块化程序的三要素 120
6.3.1 函数定义 120
6.3.2 函数调用 121
6.3.3 函数原型说明 121
6.3.4 函数定义语句在源程序文件中的位置 121
6.4 模块化程序的结构 122
6.5 程序举例:绘制几何图形的模块化程序(B) 124
6.6 函数的返回值 128
6.6.1 return语句 128
6.6.2 函数变量 128
6.7 程序举例:绘制几何图形的模块化程序(C) 132
6.8 带参数的函数 135
6.8.1 用全局变量完成函数之间的数据交换 136
6.8.2 用参数完成函数之间的数据交换 139
6.9 C++内联函数 144
6.10 模块化程序设计和实现的格式要求 148
6.11 内容回顾 149
习题6 149
第三部分 中级程序设计 155
第7章 格式化输入和输出 155
7.1 引言 156
7.2 交互式程序与批处理程序 156
7.3 C++中流的定向输入输出 156
7.4 标准输出流 157
7.5 格式化输出 158
7.5.1 简单数据类型和字符串的格式化输出 158
7.5.2 数值数据的格式化输出 160
7.5.3 浮点数的格式化输出 160
7.5.4 用格式控制符进行格式化输出 161
7.6 输出整型值 163
7.7 输出浮点值 166
7.8 输出字符串 169
7.9 关于交互输入 170
7.9.1 输入流 170
7.9.2 对输入数据格式化 172
7.9.3 用一条cin语句输入多个数据 172
7.9.4 交互输入中的注意事项 173
7.9.5 输入字符量和getch库函数 174
7.10 操作系统中的文件输入输出 175
7.10.1 输出重定向到数据文件 175
7.10.2 输入重定向到数据文件 176
7.10.3 从文件中读取格式化的数据 178
7.11 内容回顾 179
习题7 179
第8章 复杂选择和循环结构 185
8.1 引言 186
8.2 复习if语句 186
8.2.1 用else...if结构实现多路选择结构 187
8.2.2 条件选择操作符 189
8.3 复杂条件表达式 190
8.3.1 逻辑表达式和逻辑操作符 191
8.3.2 C++逻辑操作符 192
8.3.3 复杂条件表达式的简化 193
8.3.4 逻辑操作符的优先级 193
8.3.5 用带复杂条件表达式的if语句实现多路选择结构 195
8.4 用switch语句实现多路选择结构 196
8.5 多路选择结构的书写规则 201
8.6 先判定循环结构 203
8.6.1 for语句 203
8.6.2 for语句和while语句的等价性 208
8.6.3 用for语句实现循环 208
8.6.4 C++中变量定义语句的位置 213
8.7 后判定循环结构 216
8.7.1 do...while语句 216
8.7.2 用do...while语句实现计数器控制循环和哨兵控制循环 219
8.7.3 do...while语句中的break和continue语句 220
8.8 嵌套循环 222
8.9 嵌套循环的格式 225
8.10 内容回顾 226
习题8 227
第9章 再议模块化编程和函数 233
9.1 引言 234
9.2 用引用参数返回值 234
9.2.1 引用 234
9.2.2 通过引用传递参数 236
9.3 指针变量返回值 239
9.3.1 指针变量 239
9.3.2 用指针传递参数 245
9.4 递归 248
9.4.1 编写递归函数 250
9.4.2 跟踪递归函数的执行 252
9.4.3 用递归方法计算Fibonacci数 254
9.4.4 递归与循环的比较 255
9.5 再谈模块化程序的风格问题 256
9.6 内容回顾 256
习题9 256
第四部分 数据类型和面向对象编程 261
第10章 数据类型、结构和枚举 261
10.1 引言 262
10.2 基本数据类型 262
10.2.1 整数数据类型 263
10.2.2 浮点数据类型 263
10.2.3 数学计算中的错误和不精确性 265
10.2.4 数值数据类型的自动转换 267
10.3 结构数据类型 270
10.3.1 定义结构 271
10.3.2 定义结构变量 272
10.3.3 定义嵌套结构 273
10.3.4 访问结构成员 274
10.3.5 初始化结构变量 275
10.3.6 可对结构变量执行的操作 275
10.4 结构变量作为函数参数 276
10.5 用typedef定义结构类型 279
10.6 程序举例:计算学生成绩 281
10.7 枚举数据类型 293
10.7.1 定义枚举数据类型和枚举变量 293
10.7.2 可对枚举变量执行的操作 296
10.7.3 使用枚举类型 297
10.8 内容回顾 298
习题10 298
第11章 类、对象和面向对象编程 305
11.1 引言 306
11.2 类和对象 307
11.2.1 定义类 309
11.2.2 定义类对象 311
11.2.3 访问类的成员 312
11.2.4 成员函数的定义和说明 312
11.2.5 初始化类对象 312
11.2.6 构造函数和析构函数 313
11.2.7 可以对对象执行的操作 314
11.3 程序举例:用类实现求Fibonacci序列的算法 315
11.4 类的继承与派生 317
11.5 友员函数 327
11.6 运算符重载 330
11.7 面向对象编程 334
11.8 内容回顾 336
习题11 336
第12章 数组和字符串 341
12.1 引言 342
12.2 列表和数组 342
12.2.1 定义数组 343
12.2.2 数组初始化 344
12.2.3 在数组上执行的操作 345
12.2.4 数组、指针和指针运算 346
12.2.5 将数组作为实际参数传递的函数调用 348
12.3 有序数组 351
12.3.1 冒泡排序 351
12.3.2 选择排序 354
12.4 数组的查找 355
12.4.1 顺序查找 356
12.4.2 二分查找法 359
12.5 多维数组 361
12.5.1 二维数组的定义 361
12.5.2 初始化二维数组 362
12.5.3 对二维数组执行的操作 363
12.6 结构数组 368
12.7 字符数据 370
12.7.1 字符数据的内在表示 371
12.7.2 字符排列顺序 371
12.7.3 字符数据的自动转换 372
12.7.4 字符数据的输入输出 373
12.7.5 字符处理库函数 376
12.8 字符串 379
12.8.1 定义串 379
12.8.2 编译时初始化串 379
12.8.3 输出串变量 380
12.8.4 为串变量输入值 381
12.8.5 将串传递给函数 384
12.9 串处理 385
12.9.1 复制串 385
12.9.2 比较串 386
12.9.3 计算串长 387
12.9.4 串的连接 388
12.10 内容回顾 389
习题12 390
第13章 数据文件 397
13.1 引言 398
13.2 C++数据文件基础 398
13.2.1 文件处理类 399
13.2.2 文件的定义 400
13.2.3 命名数据文件 400
13.2.4 打开文件与open函数 400
13.2.5 fail成员函数 403
13.2.6 关闭文件和close成员函数 404
13.2.7 查找文件结束标志和eof成员函数 405
13.3 处理文本文件 405
13.3.1 向文本文件写入数据 406
13.3.2 从文本文件中读取数据 411
13.3.3 处理混合类型数据的文本文件 414
13.3.4 复制文件 415
13.4 处理二进制文件 417
13.4.1 创建二进制文件与write成员函数 417
13.4.2 访问二进制文件和read成员函数 419
13.4.3 存放结构化记录的二进制文件 420
13.5 程序举例:对存放类对象的二进制文件进行处理 421
13.6 随机访问文件 427
13.6.1 成员函数seekg()和tellg() 428
13.6.2 成员函数seekp()和tellp() 429
13.7 内容回顾 432
习题13 433
附录AC++关键字 439
附录BASCII和EBCDIC字符集 440
附录CC++操作符和转义序列 441
参考文献 444