《C++程序设计实用案例驱动教程 第2版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:徐军,邢海峰主编;任志鸿,徐广宇副主编
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302388104
  • 页数:318 页
图书介绍:C++是目前高校中普遍开设的一门程序设计课,本书是作者结合自己学习和使用C++ 语言的经验和感悟,用最简洁的语言去阐述原理,以案例驱动的编程思路去编排全书内容,由浅入深,循序渐进,通俗易懂。同时为了提高读者的学习兴趣,对语言知识的理论介绍也通过案例程序加以消化,而且辅以运行时的输入输出示例截图,直观明了。另外每个章节的课后均有针对本章节精心设计的课外实验,学生可以边学边练,加强理解,提高兴趣。

第1章 C++概述 1

1.1 计算机语言的发展 2

1.1.1 计算机语言简介 2

1.1.2 C++的发展 3

1.2 C++的特点 3

1.3 C++的程序构成 4

1.3.1 预处理命令 4

1.3.2 函数体 4

1.3.3 程序行 5

1.3.4 程序注释 5

1.4 C++运行环境 5

1.4.1 运行环境简介 5

1.4.2 C++程序创建 6

1.5 本章教学案例 8

1.5.1 输出字符信息 8

1.5.2 用自定义函数输出字符信息 9

1.5.3 两个数的和 10

1.5.4 用自定义函数求两个数的和 11

1.5.5 求圆的面积 11

1.5.6 用自定义函数求圆的面积 12

1.5.7 求一个数的绝对值 13

1.5.8 用自定义函数求一个数的绝对值 14

1.6 本章课外实验 15

1.6.1 计算梯形的面积 15

1.6.2 用自定义函数计算梯形的面积 15

1.6.3 用自定义函数进行算术四则运算 15

第2章 C++数据类型 16

2.1 C++数据类型概述 17

2.1.1 C++数据类型的构成 17

2.1.2 C++数据类型的声明 17

2.2 C++常量 18

2.2.1 整型常量 18

2.2.2 浮点型常量 19

2.2.3 字符型常量 19

2.2.4 字符串常量 20

2.2.5 符号常量 20

2.2.6 逻辑常量 20

2.3 C++变量 20

2.3.1 变量的定义 20

2.3.2 变量的分类 21

2.4 本章教学案例 21

2.4.1 数据类型的宽度 21

2.4.2 英寸转换成厘米 22

2.4.3 十进制与其他进制的输出 22

2.4.4 其他进制与十进制的输入 23

2.4.5 用小数和指数形式输出变量值 24

2.4.6 用符号常量计算圆面积 25

2.5 本章课外实验 26

2.5.1 计算圆的周长和面积 26

2.5.2 不同数据类型的赋值 26

第3章 C++运算符及表达式 27

3.1 基本运算符与表达式 28

3.1.1 算术运算符及表达式 28

3.1.2 自增自减运算符 29

3.1.3 pow函数 29

3.1.4 强制类型转换函数 29

3.1.5 数据长度运算符 29

3.2 逻辑值运算符与表达式 30

3.2.1 关系运算符及表达式 30

3.2.2 逻辑运算符 30

3.3 位运算符 31

3.4 条件运算符与逗号表达式 31

3.4.1 条件运算符 31

3.4.2 逗号运算符 32

3.5 赋值运算符及复合赋值运算符 32

3.5.1 赋值运算符 32

3.5.2 复合赋值运算符 32

3.6 本章教学案例 33

3.6.1 除法运算 33

3.6.2 取余运算 34

3.6.3 求商运算 34

3.6.4 数位分解运算 35

3.6.5 自增自减运算 36

3.6.6 用pow函数计算数的次方 37

3.6.7 左移与右移 37

3.6.8 用条件运算符求最大值 38

3.7 本章课外实验 39

3.7.1 数据位运算 39

3.7.2 计算表达式的值 39

3.7.3 条件运算符求绝对值 39

3.7.4 逗号表达式的计算 40

3.7.5 条件运算符判断成绩等级 40

第4章 顺序结构与选择结构 41

4.1 C++语句分类 42

4.1.1 赋值语句 42

4.1.2 声明语句 42

4.1.3 表达式语句 42

4.1.4 空语句 43

4.1.5 复合语句 43

4.1.6 函数调用语句 43

4.2 数据的输入 43

4.2.1 cin语句 43

4.2.2 getchar函数 44

4.2.3 scanf函数 44

4.3 数据的输出 44

4.3.1 cout语句 44

4.3.2 putchar函数 45

4.3.3 printf函数 45

4.4 选择结构 46

4.4.1 if语句 46

4.4.2 if…else…语句 46

4.4.3 ifelse if语句 46

4.4.4 switch语句 46

4.5 本章教学案例 47

4.5.1 用自定义函数求三个数中的最大数 47

4.5.2 输入字母进行大小写转换 48

4.5.3 复合语句变量作用范围 49

4.5.4 运用putchar输出字符 49

4.5.5 运用printf输出字符 50

4.5.6 用八进制与十六进制数输入 51

4.5.7 用小数与指数输入 52

4.5.8 用字符常量输出 52

4.5.9 用函数方程求解 53

4.5.10 用ifelse if计算货款打折 54

4.5.11 用switch计算货款打折 55

4.6 本章课后实验 56

4.6.1 不用自定义函数求三个数中的最大数 56

4.6.2 计算三角形的面积 57

4.6.3 一元二次方程求解 57

4.6.4 用条件运算符求三个数中的最大数 57

4.6.5 用条件运算符计算函数y的值 58

4.6.6 用switch语句判断成绩等级 58

4.6.7 用if语句判断计算运费 58

4.6.8 用switch语句判断计算运费 59

第5章 循环结构 60

5.1 C++循环语句 61

5.1.1 for循环 61

5.1.2 while循环 61

5.1.3 do循环 62

5.2 C++跳转语句 62

5.2.1 break语句 62

5.2.2 continue语句 62

5.2.3 goto语句 62

5.3 本章教学案例 63

5.3.1 用for循环求1~100的和 63

5.3.2 用goto语句退出循环 63

5.3.3 用while求1~100的和 64

5.3.4 用break终止while循环 65

5.3.5 用do…while循环求1~100的和 66

5.3.6 用goto语句求1~100的和 66

5.3.7 用while语句计算1~100奇数的和 67

5.3.8 用do…while计算数列和 68

5.3.9 用goto语句控制数列求和 69

5.3.10 计算10! 70

5.3.11 判断素数 70

5.3.12 通过continue结束本次循环 71

5.3.13 学生成绩计算 72

5.4 本章课外实验 73

5.4.1 输出10~20间的素数 73

5.4.2 求Fibonacci数列的前40项 73

5.4.3 输出九九乘法表 74

5.4.4 计算多项式的和 74

5.4.5 输出三位数的水仙花数 74

5.4.6 猴子吃桃 75

5.4.7 百钱百鸡 75

5.4.8 鸡兔同笼 75

5.4.9 三位数的回文数 76

5.4.10 同构数 76

5.4.11 最大公约数与最小公倍数 76

第6章 一维数组与指针 77

6.1 一维数组 78

6.1.1 一维数组的定义 78

6.1.2 一维数组的初始化 78

6.1.3 一维数组下标的引用 79

6.2 指针变量 79

6.2.1 指针的含义 79

6.2.2 指针变量的定义 79

6.3 一维数组与指针变量 80

6.3.1 首地址的确定 80

6.3.2 首地址的下一个地址的表示方法 80

6.4 本章教学案例 81

6.4.1 用数组中的10个数求和 81

6.4.2 Fibonacci数列 82

6.4.3 数组排序 82

6.4.4 用数组进行学生成绩统计 83

6.4.5 用数组存储数据 84

6.4.6 通过指针变量分析一维数组 85

6.4.7 通过指针变量计算10个数的和 87

6.5 本章课外实验 88

6.5.1 数组逆序输出 88

6.5.2 冒泡法排序 88

6.5.3 两个数互换 88

6.5.4 指针变量排序 89

6.5.5 数组与指针变量 89

6.5.6 用指针变量计算最大值和最小值 90

第7章 二维数组与指针 91

7.1 二维数组 92

7.1.1 二维数组的定义 92

7.1.2 二维数组的初始化 92

7.1.3 二维数组下标的引用 92

7.2 二维数组的指针 93

7.3 本章教学案例 93

7.3.1 二维数组的输出 93

7.3.2 二维数组每行最大数 94

7.3.3 将一维数组转换成二维数组 95

7.3.4 五行五列矩阵 96

7.3.5 用二维数组指针输出地址及数据 97

7.3.6 用指针变量求二维数组中的最大数 99

7.3.7 用指针变量求二维数组中每行的和 100

7.4 本章课外实验 101

7.4.1 计算数组每行的和 101

7.4.2 计算数组每行的平均值 101

7.4.3 数组行列互换 101

7.4.4 二维数组赋给一维数组 102

第8章 字符数组与指针 103

8.1 字符串数组 104

8.1.1 字符串一维数组 104

8.1.2 字符串一维数组下标的引用 104

8.1.3 字符串二维数组 104

8.1.4 字符串数组的输入与输出 105

8.2 字符串的string类型 105

8.2.1 string字符串变量 105

8.2.2 string字符串数组 105

8.3 字符串常用函数 106

8.4 字符串指针变量 106

8.4.1 字符串指针变量的定义 106

8.4.2 字符串指针下一个地址的表示方法 106

8.5 本章教学案例 107

8.5.1 字符串大小写转换 107

8.5.2 字符分类统计 108

8.5.3 字符串空格删除 109

8.5.4 字符出现的次数 110

8.5.5 字符串长度的计算 110

8.5.6 字符串倒置 111

8.5.7 字符串连接 112

8.5.8 字符串指针地址 113

8.5.9 英文的输入与输出 114

8.6 本章课外实验 115

8.6.1 26个大写英文字母存入数组 115

8.6.2 字符串连接 115

8.6.3 查找相同的字符 116

8.6.4 相同字符的删除 116

8.6.5 字符串中的最大字符 116

8.6.6 计算子串的个数 117

8.6.7 字符串排序 117

第9章 自定义函数与参数传递 118

9.1 自定义函数 119

9.1.1 无参函数 119

9.1.2 有参函数 119

9.2 函数调用 120

9.3 参数传递 120

9.3.1 按值传递 120

9.3.2 按地址传递 121

9.3.3 引用传递 121

9.4 函数模板与函数重载 121

9.5 函数递归 122

9.6 本章教学案例 122

9.6.1 小写字母转换 122

9.6.2 按值传递两个数 124

9.6.3 按地址传递两个数 124

9.6.4 按引用传递两个数 125

9.6.5 大于M的k个素数 126

9.6.6 通过函数模板求三个数中的最大数 128

9.6.7 通过函数重载求三个数中的最大数 129

9.6.8 用递归计算一个数的阶乘 130

9.7 本章课外实验 131

9.7.1 完全平方数 131

9.7.2 计算整数部分和小数部分之和 131

9.7.3 计算相同字符的个数 131

9.7.4 字符串左移 132

9.7.5 数的整除 132

9.7.6 递归求和 132

9.7.7 递归输出两位数的素数 133

第10章 变量的作用域 134

10.1 变量的作用域概述 135

10.1.1 局部变量 135

10.1.2 全局变量 136

10.1.3 变量作用域分类 136

10.2 变量的存储类型 137

10.2.1 自动变量 137

10.2.2 静态变量 138

10.2.3 寄存器变量 138

10.2.4 外部变量 138

10.3 内部函数与外部函数 139

10.3.1 内部函数 139

10.3.2 外部函数 139

10.4 本章教学案例 139

10.4.1 局部变量的应用 139

10.4.2 全局变量的应用 140

10.4.3 变量的作用域应用 141

10.4.4 用静态变量求阶乘 143

10.4.5 用外部变量求两个数的和 143

10.4.6 用外部函数求一个数的阶乘 144

10.5 本章课外实验 145

10.5.1 递归计算1~100的和 145

10.5.2 偶数分解成两个素数的和 146

10.5.3 插入排序 146

10.5.4 计算字符串的长度 146

第11章 结构体与共用体 147

11.1 结构体概述 148

11.1.1 结构体的概念 148

11.1.2 结构体的定义格式 148

11.2 结构体的使用 149

11.2.1 定义结构体的方法 149

11.2.2 结构体变量 150

11.3 结构体数组与指针 151

11.3.1 结构体数组的定义 151

11.3.2 结构体数组的初始化 151

11.3.3 结构体指针 151

11.4 共用体 152

11.4.1 共用体的格式 152

11.4.2 共用体变量 152

11.5 本章教学与案例 153

11.5.1 用结构体输出三个学生(1) 153

11.5.2 用结构体输出三个学生(2) 154

11.5.3 用自定义结构体输入输出一个学生 155

11.5.4 用结构体求三个学生的总分 156

11.5.5 用结构体排序 156

11.5.6 用结构体数组指针输出三个学生 158

11.6 本章课外实验 159

11.6.1 指针变量计算成绩总分 159

11.6.2 指针变量输入数据计算总分 159

11.6.3 结构体数组排序 159

11.6.4 结构体计算总分 160

第12章 类与对象 161

12.1 类与对象概述 162

12.1.1 类与对象的概念 162

12.1.2 对象的状态 163

12.2 类与对象的创建 163

12.2.1 类的创建 163

12.2.2 对象的创建 164

12.2.3 类的成员函数 165

12.3 构造函数与析构函数 165

12.3.1 构造函数 165

12.3.2 析构函数 166

12.3.3 构造函数的重载 167

12.4 本章教学案例 167

12.4.1 用学生类及类内定义输入输出成员函数 167

12.4.2 用学生类及类外定义输入输出函数 168

12.4.3 用三个数求最大数 169

12.4.4 求梯形的面积 170

12.4.5 用两个类处理学生成绩 172

12.4.6 构造函数重载与析构函数应用 173

12.4.7 计算子串在字符串中出现的次数 174

12.4.8 构造函数与指针变量 176

12.5 本章课外实验 177

12.5.1 学生类的应用 177

12.5.2 通过成员函数计算字符串的长度 177

12.5.3 构造函数重载求三个数的最大数 178

12.5.4 成员函数计算二维数值每行的最大数 178

12.5.5 成员函数与文本文件的读写 178

12.5.6 成员函数对字符串进行大小写转换 178

第13章 对象数组与指针 179

13.1 对象数组 180

13.1.1 对象数组的声明 180

13.1.2 对象数组的引用 180

13.2 对象指针 180

13.2.1 类的指针变量 180

13.2.2 对象指针 181

13.2.3 this指针 181

13.3 静态成员 181

13.3.1 静态数据成员 181

13.3.2 静态成员函数 182

13.4 友元 182

13.4.1 友元函数 182

13.4.2 友元类 183

13.5 本章教学案例 183

13.5.1 用对象数组处理三个学生的成绩 183

13.5.2 用对象数组求梯形的面积 185

13.5.3 用对象数组指针计算三个学生成绩的和 186

13.5.4 用常成员和常成员函数计算梯形的面积 188

13.5.5 用静态成员求梯形的面积 189

13.5.6 用友元函数输出最大数和最小数 190

13.6 本章课外实验 191

13.6.1 对象数组计算梯形的面积 191

13.6.2 对象指针计算成绩和 192

13.6.3 静态数据成员计算梯形的面积 192

13.6.4 友元函数计算三个数的和 192

第14章 运算符重载 193

14.1 运算符重载概述 194

14.1.1 运算符重载 194

14.1.2 运算符重载定义 194

14.1.3 运算符重载格式 195

14.2 运算符重载与成员函数 195

14.2.1 单目运算符重载为成员函数 195

14.2.2 双目运算符重载为成员函数 196

14.3 运算符重载与友元函数 196

14.3.1 单目运算符重载为友元函数 197

14.3.2 双目运算符重载为友元函数 197

14.4 成员运算符函数与友元运算符函数的比较 197

14.4.1 定义的差别 197

14.4.2 调用的差别 198

14.5 本章教学案例 198

14.5.1 使用运算符重载,求复数的差 198

14.5.2 使用运算符重载,求复数与实数的差 199

14.5.3 通过运算符“<”,“>”,“==”重载,比较两个字符串的大小 200

14.5.4 重载调用运算符“()” 202

14.5.5 重载下标运算符 203

14.5.6 重载复数加法(+)和赋值(=) 204

14.5.7 用友元函数重载运算符 205

14.5.8 用友元函数方式重载插入运算符“<<” 207

14.6 本章课外实验 208

14.6.1 运算符“-”和“+”的重载 208

14.6.2 自增“++”运算符的重载 208

14.6.3 算术运算符的重载 208

14.6.4 “<<”和“>>”运算符的重载 209

第15章 继承与派生 210

15.1 继承与派生概述 211

15.1.1 继承与派生的概念 211

15.1.2 派生类的声明方式 211

15.1.3 派生类的构成 212

15.1.4 派生类的访问权限 212

15.1.5 派生类构造函数和析构函数的构建 213

15.1.6 派生类构造函数和析构函数的执行顺序 214

15.1.7 基类与派生类的赋值兼容 215

15.2 多重继承 215

15.2.1 多重继承的声明 215

15.2.2 多重继承的构造函数和析构函数 215

15.2.3 多重继承的二义性 216

15.3 虚基类与继承组合 216

15.3.1 虚基类的定义 216

15.3.2 虚基类的构造与析构 217

15.3.3 继承与组合 217

15.4 本章教学案例 217

15.4.1 通过继承学生类来实现研究生类 217

15.4.2 公有继承访问权限 219

15.4.3 私有继承访问权限 220

15.4.4 保护继承访问权限 222

15.4.5 派生类的构造顺序和析构顺序 223

15.4.6 基类与派生类的赋值兼容 224

15.4.7 类的多继承 226

15.4.8 虚拟继承与虚基类 227

15.4.9 继承与组合 228

15.5 本章课外实验 230

15.5.1 圆类的应用 230

15.5.2 点类的应用 231

15.5.3  ABC类的继承 231

15.5.4 父类的继承 231

15.5.5 学生类的应用 232

第16章 多态性与虚函数 233

16.1 多态 234

16.1.1 多态的概念与作用 234

16.1.2 多态的实现方法 234

16.2 虚函数 235

16.2.1 虚函数的引入 235

16.2.2 虚函数的定义 235

16.2.3 虚函数的使用 235

16.3 静态联编与动态联编 236

16.3.1 联编的概念 236

16.3.2 静态联编与动态联编 236

16.3.3 静态多态性和动态多态性 236

16.3.4 动态联编实现原理 236

16.4 纯虚函数与抽象类 237

16.4.1 纯虚函数 237

16.4.2 抽象类 237

16.5 本章教学案例 238

16.5.1 没有虚函数的情况下继承学生类来实现研究生类 238

16.5.2 有虚函数的情况下继承学生类来实现研究生类 239

16.5.3 学习纯虚函数、抽象类的定义与使用 241

16.6 本章课外实验 243

16.6.1 形状类的派生 243

16.6.2 动物类的派生 243

第17章 文件的输入与输出 244

17.1  C++流类库 245

17.1.1 基本I/O流类库 245

17.1.2 文件I/O流类库 245

17.1.3 字符串I/O流类库 246

17.2 文件流 246

17.2.1 文件的概念 246

17.2.2 文件指针与文件对象 246

17.3 文件的读写操作 247

17.3.1 使用指针读写文件 247

17.3.2 用文件对象读写文件 248

17.3.3 文件尾函数 249

17.4 顺序文件读写 249

17.4.1 数值数据的读写 249

17.4.2 字符数据的读写 250

17.4.3 字符串数据的读写 250

17.5 二进制文件的读写 250

17.5.1 二进制文件的读写操作 251

17.5.2 二进制随机文件读写 251

17.6 本章教学案例 252

17.6.1 利用文件指针写1~100的数 252

17.6.2 利用文件对象写1~100的数 252

17.6.3 利用文件指针读数据 253

17.6.4 利用文件对象读数据 254

17.6.5 利用文件指针写字符 254

17.6.6 利用文件指针读字符 255

17.6.7 利用文件对象写字符 256

17.6.8 利用文件对象读字符 256

17.6.9 利用文件指针写字符串 257

17.6.10 利用文件指针读字符串 258

17.6.11 利用文件对象写字符串 259

17.6.12 利用文件对象读字符串 260

17.7 本章课外实验 261

17.7.1 文件指针写入被3和7整除的数 261

17.7.2 文件对象写入被3和7整除的数 261

17.7.3 文件指针写入1~100的奇数 261

17.7.4 文件对象写入1~100的奇数 261

17.7.5 把两位数的素数写入文本文件 261

17.7.6 文本文件字符的读取 262

17.7.7 将四位数中数位全是偶数的写入文本文件 262

17.7.8 一元二次方程求解 262

附录A 课外实验参考答案 263

附录B C/C++头文件 314

附录C 7位基本ASCII码表 316

附录D C++运算符 317

参考文献 318