第一部分 计算与算法基础 1
第1章 导论 3
1.1计算系统 3
珠算系统 3
电子计算机基本原理 5
信息数字化及其标准化 10
1.2计算机程序设计语言概述 15
计算机低级语言与高级语言 15
高级语言程序要素 16
高级语言程序设计方法 17
1.3算法基础 19
算法的概念 19
算法的表示 19
1.4小结 21
练习1 22
第二部分 面向过程程序设计 25
第2章 C++概貌 27
2.1基本程序设计 27
“算术测验”程序之一 27
C++程序基本元素 30
输入输出及赋值操作 33
2.2基本程序改进 36
“算术测验”程序之二 36
C++基本运算 37
C++程序流程控制 41
2.3基本程序扩展 47
简单函数 47
多文件结构 49
2.4 C++程序开发流程 51
2.5 C++应用程序集成开发环境简介 52
MinGW Developer Studio简介 53
VC++控制台应用程序开发集成环境 53
2.6趣味程序——变换的字符 60
2.7小结 61
练习2 61
第3章 数据的表示及I/O流格式控制 68
3.1数据的表示 68
常量 68
变量 69
变量的引用 75
常量的引用 75
3.2函数 76
函数的形式参数 77
函数的返回类型 81
3.3运算表达式 84
C++运算符汇总 84
单目运算 84
二进制位运算 84
迭代赋值运算 87
抽取及插入运算 87
三目条件运算 88
逗号运算 88
区分作用域 88
3.4语句 88
3.5 I/O流格式控制 89
3.6应用举例 93
深入理解ASCII字符集 93
深入理解整型数据 95
输出字符图案 97
3.7趣味程序——行走的字符串 98
3.8小结 99
练习3 99
第4章 变量设计 106
4.1穷举计算 106
“百钱买百鸡”问题 106
判定素数 109
4.2迭代计算 111
牛顿迭代法 112
级数计算 112
最大公因数和最小公倍数 116
4.3标志变量的设计与应用 117
整除问题 117
三角形的周长及面积 120
4.4单变量版“评委评分”程序设计 120
问题描述及算法分析 121
程序实现 121
4.5趣味程序——击打字母游戏 124
4.6小结 125
练习4 125
第5章 数组与指针 130
5.1数组 130
数组的定义 130
访问数组元素 131
多维数组 131
5.2数组版“评委评分”程序设计 132
问题描述及算法分析 132
程序实现 133
5.3指针 135
定义指针变量 135
指针运算 136
5.4动态变量和动态数组——堆变量和堆数组 138
5.5地址值在函数之间传递 140
传递地址值——值传递 140
传递指针变量——引用传递 144
返回地址 145
5.6堆数组版“评委评分”程序设计 145
5.7字符数组与C-字符串 148
字符数组 148
C-字符串 149
字符串I/O操作 150
C-字符串处理函数 152
5.8指针数组与数组指针 155
指针数组 155
数组指针 157
5.9趣味程序 158
生日的概率问题 158
匹配的概率问题 159
模仿密码输入 160
5.10小结 162
练习5 163
第6章 函数 173
6.1函数概述 173
6.2函数的调用机制 174
函数调用的栈操作过程 174
函数原型纵览 179
6.3函数版“评委评分”程序设计 182
功能模块设计 182
功能实现——函数定义 183
6.4递归函数 186
6.5函数重载 189
6.6参数带默认值的函数 190
6.7内联函数 191
6.8函数模板 192
描述函数模板 192
模板函数的使用 193
重载模板函数 194
6.9函数应用 195
静态局部变量的特性 195
排序 196
定积分计算 201
矩阵乘积 203
动态二维数组 206
6.10趣味程序——高尔顿钉板实验模拟 208
6.11小结 210
练习6 210
第7章 程序结构 219
7.1多文件结构 219
同一编译单元中的共享变量及函数 219
不同编译单元中的共享变量及函数 219
头文件 220
7.2编译预处理指令 222
文件包含指令 222
宏定义指令 223
条件编译指令 223
7.3名字空间 225
7.4隐藏函数的定义 230
7.5小结 230
练习7 231
第8章 链表 232
8.1结构体 232
数据组织形式描述 232
创建结构体对象 232
访问对象的成员 233
8.2链表的概念 234
结点的结构 234
单向链表 235
8.3链表操作 236
遍历 236
插入一个结点 239
删除一个结点 240
链表版“评委评分”程序清单 241
8.4小结 254
练习8 254
第三部分 面向对象程序设计 261
第9章 类与类的对象 263
9.1类的声明 264
成员的访问控制 265
数据成员和成员函数 265
9.2创建类的对象 266
创建对象 266
对象的基本空间 267
9.3对象的自我表现 267
this指针 268
常量成员函数 269
9.4封装与隐藏 270
屏蔽类的内部实现 270
隐藏类的内部实现 273
9.5小结 276
练习9 276
第10章 构造函数及赋值运算 281
10.1构造函数 281
默认构造函数 281
转换构造函数 282
构造函数的使用 284
10.2析构函数 286
析构函数的概念 286
对象构造和析构的顺序 287
10.3复制构造函数 287
浅复制构造——复制对象基本空间的数据成员 288
对象的资源空间 292
深复制构造——构造属于自己的资源空间 294
10.4赋值运算 295
10.5组合成员的构造 298
成员的构造时机 298
组合成员的构造——冒号语法 299
10.6趣味程序——模拟银行打印储户存折 306
10.7小结 309
练习10 309
第11章 静态成员及友元 314
11.1静态成员 314
静态数据成员 315
静态成员函数 316
11.2友元 320
友元函数 320
友元类 326
11.3趣味程序——自动单向链表类 327
11.4小结 331
练习11 331
第12章 类模板 334
12.1类模板与模板类 334
类模板声明 334
模板类及其对象 335
12.2单向链表类模板 336
单向链表类模板框架设计 336
单向链表类模板实现技术 337
12.3趣味程序设计——单向链表类模板应用 347
约瑟夫(Josephus)问题 347
链表结点的奇偶二分 349
删除两条链表的最大相同前缀 351
12.4小结 352
练习12 352
第13章 运算符重载 354
13.1运算符概述 354
13.2重载运算符 355
重载双目运算符 359
重载单目运算符 362
Date类的综合测试 364
13.3自定义版字符串类——String 366
13.4趣味程序——“评委评分”程序之类模板应用 372
13.5小结 379
练习13 379
第14章 继承与多态性 382
14.1继承与派生概述 382
抽象与具体 382
组合与继承 383
派生类成员的访问属性 387
14.2派生类对象的构造 390
派生类对象的构造与析构 390
派生类对象的空间 391
派生类对基类的赋值兼容性 392
14.3多态性 392
虚函数 394
重载运算符享受多态性 397
虚析构函数 398
纯虚函数与抽象类 401
关于虚函数的说明 402
14.4多重继承 402
多重继承的一般形式 403
虚拟继承 403
14.5 构造顺序 406
14.6小结 409
练习14 409
第15章 I/O流 416
15.1标准I/O流 416
操作系统关于标准I/O及其重新定向 416
常用输入流成员函数 419
常用输出流成员函数 422
15.2文件I/O流 422
文本文件 424
二进制文件 426
应用举例 429
15.3字符串I/O流 432
C语言中的字符串生成与解析 432
C++字符串流类 433
15.4趣味程序——探究文件字节内容 434
15.5小结 440
练习15 440
第16章 异常处理 441
16.1异常处理的概念 441
16.2异常处理的方法 441
抛掷异常 441
圈定及捕捉处理 443
16.3趣味程序——正整数算术运算测验程序 445
16.4小结 454
练习16 454
附录A ASCII字符集 455
附录B 常用库函数参考 456
B1 C-字符串函数 456
B2 转换函数 457
B3 随机数发生器 457
B4 数学函数 458
参考文献 459