第1章 程序设计的概念 1
1.1 基本知识 2
1.1.1 C++程序中的语句及命令行 2
1.1.2 C++程序中的函数 4
1.1.3 Visual C++的控制台工程 6
1.2 程序解析 8
程序1-1 计算并联电阻 9
程序1-2 求解二元一次方程组 10
程序1-3 判断考试是否及格 11
1.3 实验指导 13
实验1-1 C++程序的编辑、编译和运行 13
实验1-2 简单C++程序 18
实验1-3 程序的调试和运行 23
第2章 基本数据类型与表达式 28
2.1 基本知识 29
2.1.1 基本数据类型、常量与变量 29
2.1.2 运算符与表达式 30
2.1.3 数据的输入与输出 33
2.2 程序解析 36
程序2-1 整数加法练习 36
程序2-2 输出5位整数的反序数 38
程序2-3 统计参赛选手分数 40
2.3 实验指导 41
实验2-1 不同类型数据的输入输出 41
实验2-2 表达式求值 46
实验2-3 数据的输出格式控制 48
第3章 算法与控制结构 50
3.1 基本知识 51
3.1.1 算法的概念与表示 51
3.1.2 算法的3种基本结构 52
3.1.3 C++中实现选择结构和循环结构的语句 54
3.2 程序解析 56
程序3-1 求三角形的面积 56
程序3-2 确定某年某月的天数 57
程序3-3 输出100以内能同时被3和5整除的数 59
程序3-4 穷举法求组合数 61
程序3-5 计算sinx函数的值 62
3.3 实验指导 64
实验3-1 3种基本结构 64
实验3-2 迭代法与穷举法 66
第4章 函数与编译预处理 69
4.1 基本知识 70
4.1.1 函数的定义和调用 70
4.1.2 变量的作用域 72
4.1.3 变量的生存期 73
4.1.4 C++程序的多文件结构 75
4.1.5 编译预处理 77
4.2 程序解析 79
程序4-1 将字符串中的小写字母转换为大写字母 79
程序4-2 求3个实数中的最大数 80
程序4-3 比较两个分数的大小 81
程序4-4 求多项式的值 83
程序4-5 牛顿迭代法求方程的根 84
4.3 实验指导 87
实验4-1 函数的定义和调用 88
实验4-2 函数的嵌套与递归调用 90
实验4-3 编译预处理与多文件结构 92
第5章 构造类型与顺序表操作 95
5.1 基本知识 96
5.1.1 一维数组的定义和使用 96
5.1.2 二维数组的定义和使用 97
5.1.3 字符串处理 100
5.1.4 结构体的定义和使用 103
5.1.5 顺序表的概念 105
5.1.6 顺序表的C++实现 106
5.2 程序解析 109
程序5-1 顺序查找 109
程序5-2 二分查找 112
程序5-3 筛法求素数 114
程序5-4 约瑟夫斯问题 117
程序5-5 快速排序 119
程序5-6 计算并输出学生成绩表 121
程序5-7 枚举型变量的使用 123
5.3 实验指导 126
实验5-1 数组的使用 126
实验5-2 字符串的使用 129
实验5-3 结构体及结构体数组的使用 132
第6章 指针与链表 135
6.1 基本知识 136
6.1.1 指针变量 136
6.1.2 动态存储分配 137
6.1.3 指针与数组和字符串 139
6.1.4 指针与函数 142
6.1.5 线性链表 146
6.2 程序解析 149
程序6-1 三数排序并输出 149
程序6-2 逆置数组元素 151
程序6-3 计算圆的周长和面积 152
程序6-4 按3位分节格式输出正整数 154
程序6-5 线性链表求解约瑟夫斯问题 155
6.3 实验指导 157
实验6-1 指针变量与取地址运算符 158
实验6-2 指针与数组和字符串 159
实验6-3 线性单链表的创建与查找 163
第7章 类和对象 166
7.1 基本知识 167
7.1.1 类与对象的定义和使用 167
7.1.2 构造函数与析构函数 169
7.1.3 对象与指针 172
7.1.4 类的静态成员和友元 174
7.1.5 类的常对象与常成员 175
7.2 程序解析 177
程序7-1 日期类 177
程序7-2 日期时间类 179
程序7-3 学生成绩类 181
程序7-4 核对密码的学生成绩类 184
程序7-5 矩阵的加减运算 187
7.3 实验指导 190
实验7-1 修改并运行程序 190
实验7-2 人员类及其对象 195
实验7-3 椭圆类及其对象 196
第8章 类的继承性与多态性 198
8.1 基本知识 199
8.1.1 派生类的定义 199
8.1.2 派生类的继承方式 200
8.1.3 派生类的构造函数和析构函数 202
8.1.4 重载 205
8.1.5 虚函数 207
8.2 程序解析 210
程序8-1 点类与直线类 210
程序8-2 点类、圆类与圆柱类 212
程序8-3 多重继承的工程硕士类 215
程序8-4 通过函数重载求数组中最大元素 217
程序8-5 抽象图形类以及圆、矩形和三角形类 219
8.3 实验指导 221
实验8-1 类的继承性 222
实验8-2 函数重载与运算符重载 224
实验8-3 虚函数与抽象类 226
第9章 模板、异常处理和命名空间 230
9.1 基本知识 231
9.1.1 函数模板和类模板 231
9.1.2 异常处理 232
9.1.3 命名空间 233
9.2 程序解析 234
程序9-1 模板函数实现矩阵加法 235
程序9-2 类模板实现顺序表 237
程序9-3 类模板实现数组越界报错 240
9.3 实验指导 242
实验9-1 函数模板和类模板 242
实验9-2 异常处理 245
第10章 输入/输出流 248
10.1 基本知识 249
10.1.1 输入/输出流 249
10.1.2 数据文件的打开与关闭 252
10.1.3 数据文件的读写 254
10.2 程序解析 257
程序10-1 从输入流中分析出数字串 257
程序10-2 通信录文本文件 259
程序10-3 二进制方式打开指定文件 261
10.3 实验指导 262
实验10-1 输出操作 263
实验10-2 输入操作 264
实验10-3 文件读写操作 265
附录A ASCII码表 269
附录B 程序的调试与纠错 272
附录C 图形用户界面应用程序 279
参考文献 293