目录 1
第1课 C++基础知识 1
课堂讲解 2
一、从C到C++ 2
二、程序与语言 2
三、结构化程序设计(为处理复杂问题提供了有力的手段) 3
四、面向对象程序设计 4
五、程序开发过程 4
六、C++程序基本框架结构 4
七、结构化程序设计与面向对象的程序设计比较 6
八、编译环境 6
十、Visual C++开发环境概述 8
九、Microsoft Visual C++的帮助 8
上机练习 10
练习1 作者的祝愿 10
练习2 分牛的传说 12
第2课 数据类型和控制结构 15
课堂讲解 16
一、字符集与保留字 16
二、数据类型 16
三、变量定义 17
四、常量 17
五、I/O流控制 18
六、表达式 18
七、算术类型转换 18
十三、if语句 19
十二、逗号运算符 19
十四、while语句 19
八、增量与减量 19
十一、条件运算符 19
十、逻辑运算 19
九、关系运算 19
十五、do...while语句 20
十六、for语句 20
十七、switch语句 20
十八、转向语句 20
上机练习 21
练习3 打印图案 21
练习4 大写金额 24
练习5 证明“素数公式” 28
练习6 牛顿迭代法求方程根 30
练习7 二分法求方程根 32
练习8 杨辉三角的奥妙 34
练习9 判断整除 36
第3课 函数 39
课堂讲解 40
一、函数概述 40
二、函数原型 40
三、全局变量与局部变量 41
四、函数调用机制 42
五、递归(Recursive)函数 42
六、内联函数 42
八、默认参数的函数 43
七、重载函数 43
上机练习 44
练习10 验证“歌德巴赫猜想” 44
练习11 魔方阵 46
练习12 汉诺塔(Tower of Hanoi)的递归解法 48
练习13 八皇后游戏 51
练习14 探询路径 54
练习15 “掷双骰”游戏 56
练习16 “完全数”判别(方法一) 58
练习17 比我疆土 61
练习18 巧填数字 63
练习19 打印螺旋方阵 64
第4课 数组和指针 66
三、向函数传递数组 67
四、二维数组 67
课堂讲解 67
二、数组的使用 67
一、数组定义 67
五、指针的概念 68
六、指针运算 69
七、指针与数组 69
八、堆内存 69
九、const指针 69
十、指针与函数 69
十一、字符指针 70
十二、指针数组 70
十三、函数指针 71
练习20 “完全数”判别(方法二) 72
上机练习 72
练习21 Eratosthenes法求素数 73
练习22 智者生存 75
练习23 矩阵转置 77
练习24 字符串倒序(方法一:指针实现) 80
练习25 姓氏排序 82
练习26 矩阵的马鞍点 84
练习27 动态分配数组的存储空间 86
练习28 寻找最长的单词 88
练习29 const指针 90
练习30 顺序查找 91
练习31 折半查找 93
练习32 编排日历 94
练习33 表白爱之“心” 97
练习34 求定积分(梯形法) 98
第5课 引用与结构 101
课堂讲解 102
一、引用的概念和操作 102
二、用引用传递函数参数 103
三、结构 103
四、链表结构 104
上机练习 106
练习35 求学位课平均分 106
练习36 统计优秀者人数 108
练习37 最大子段和(解法1) 109
练习38 最大子段和(解法2) 111
练习39 最大子段和(解法3) 113
练习40 100米比赛排名(解法1) 116
练习41 100米比赛排名(解法2) 118
练习42 建立我的好友档案 120
练习43 完善我的好友档案(一) 123
练习44 完善我的好友档案(二) 125
练习45 公正的计票器 129
练习46 汉诺塔(TowerofHanoi)的非递归解法 132
练习47 Huffman编码——建立Huffman树 134
练习48 Huffman编码——Huffman树编码 138
练习49 农夫、狼、羊与白菜问题——图的存储 140
练习50 农夫、狼、羊与白菜问题——图的遍历 143
第6课 类和对象 148
二、成员函数的定义 149
一、类的定义 149
课堂讲解 149
三、对象的定义及其成员的访问 151
四、静态成员 152
五、对象的作用域和生存期 152
六、类成员的访问控制说明符 152
七、屏蔽类的内部实现的好处 152
上机练习 153
练习51 斐波那契数列的计算 153
练习52 计算两点的距离 156
练习53 计算圆柱体体积与表面积(结构实现) 159
练习54 计算圆柱体体积与表面积(类实现) 161
练习55 建立学生成绩管理系统 163
练习56 字符串倒序(方法二:栈实现) 168
练习57 判断字符串是否回文 170
练习58 求学位课平均分(嵌套类实现) 173
练习59 计算π值(随机投点法) 177
练习60 模拟抛硬币所得正面的频率图 180
第7课 堆、构造函数与拷贝构造函数 182
课堂讲解 183
一、构造函数 183
二、析构函数 184
三、拷贝构造函数 184
四、类的聚集(组合) 185
五、初始化表对常量数据成员或常量引用成员提供初值 185
六、动态存储 186
练习61 复数的运算(成员函数实现) 188
上机练习 188
练习62 100米比赛排名(解法3) 191
练习63 设计我的计算器 194
练习64 学生信息的管理 199
练习65 this指针的应用 202
练习66 类成员初始化的困惑 204
练习67 避免缺省参数构造函数的二义性 208
练习68 常数据成员的初始化 211
练习69 拷贝构造函数(一) 213
练习70 拷贝构造函数(二) 217
第8课 静态成员、友元与模板 220
课堂讲解 221
一、静态成员 221
二、友元 222
三、模板 223
上机练习 226
练习71 金卡账目管理 226
练习72 复数的运算(友元函数实现) 229
练习73 求两直线的交点 231
练习74 快速排序算法 234
练习75 二分查找算法 236
第9课 继承与派生 239
课堂讲解 240
一、基类和派生类 240
二、子类型 242
三、虚基类 242
练习76 长途电话计费程序 244
上机练习 244
练习77 一个小公司的工资管理系统 247
练习78 学生成绩管理系统(类继承) 251
练习79 大学人员管理系统 254
练习80 子随父姓 258
第10课 多态性和虚函数 261
课堂讲解 262
一、函数重载 262
二、运算符重载 263
三、静态联编和动态联编 264
四、虚函数 264
五、纯虚函数和抽象类 265
上机练习 266
练习81 重载实现有理数的各种运算 266
六、虚析构函数 266
练习82 点对象间的各种运算 270
练习83 比较同学的年龄 273
练习84 矩阵的基本运算 276
练习85 检查数组是否越界 279
练习86 计算三角形面积之和 281
练习87 链表指针对集合的各项操作 283
练习88 抽象类求图形面积和周长 288
练习89 虚重载运算符函数 290
练习90 一个小公司的工资管理系统(虚函数实现) 293
第11课 I/O流类库和异常处理 298
一、I/O流的概念 299
二、输出流 299
课堂讲解 299
三、输入流 301
四、I/O运算符重载 302
五、异常处理 302
上机练习 304
练习91 显示九九乘法表 304
练习92 浏览文本文件 306
练习93 文本文件复制 308
练习94 有理数的四则运算(重载“<<”、“>>”) 311
练习95 我的朋友信息管理(一) 315
练习96 我的朋友信息管理(二) 318
练习97 我的朋友信息管理(三) 322
练习98 异常处理应用 327
练习99 显示文件大小 330
练习100 异常处理中的构造与析构 331