《C++程序设计 原书第3版》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)梁勇著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2015
  • ISBN:9787111485148
  • 页数:575 页
图书介绍:本书采用“问题驱动”、“基础先行”和“实例和实践相结合”的方式,阐明了基本的C++特性。本书共分为三部分,第一部分介绍C++程序设计的基本概念,第二部分介绍面向对象程序设计方法,第三部分介绍算法与数据结构方面的内容。为了帮助学生更好地掌握相关知识,本书每章都包括以下模块:目标,引言,关键点,检查点,问题和实例研究,本章小结,在线测验,程序设计练习,提示、小窍门、警示和教学提示。本书可以作为高等院校计算机及相关专业C++程序设计课程的教材,也可以作为C++程序设计的自学参考书。

第一部分 编程基础 2

第1章 计算机、程序和C++语言简介 2

1.1 引言 2

1.2 什么是计算机 3

1.2.1 CPU 4

1.2.2 位和字节 4

1.2.3 内存 5

1.2.4 存储设备 5

1.2.5 输入输出设备 6

1.2.6 通信设备 7

1.3 编程语言 8

1.3.1 机器语言 8

1.3.2 汇编语言 9

1.3.3 高级语言 9

1.4 操作系统 10

1.4.1 控制和监视系统活动 11

1.4.2 分配和指派系统资源 11

1.4.3 任务调度 11

1.5 C++语言的历史 11

1.6 一个简单的C++程序 12

1.7 C++程序开发周期 16

1.8 程序风格和文档 18

1.8.1 适当的注释和注释风格 18

1.8.2 正确的缩进和间距 18

1.9 编程错误 19

1.9.1 语法错误 19

1.9.2 运行时错误 19

1.9.3 逻辑错误 20

1.9.4 常见错误 20

关键术语 22

本章小结 22

在线测验 23

程序设计练习 23

第2章 程序设计基础 25

2.1 引言 25

2.2 编写简单的程序 25

2.3 从键盘读取输入 28

2.4 标识符 30

2.5 变量 30

2.6 赋值语句和赋值表达式 32

2.7 命名常量 33

2.8 数值数据类型及其运算 34

2.8.1 数值类型 34

2.8.2 数值文字常量 37

2.8.3 数值运算符 37

2.8.4 指数运算符 38

2.9 算术表达式和运算符优先级 39

2.10 实例研究:显示当前时间 41

2.11 简写运算符 43

2.12 自增、自减运算符 43

2.13 数值类型转换 45

2.14 软件开发流程 47

2.15 实例研究:计算给定金额的货币数量 51

2.16 常见错误 53

关键术语 54

本章小结 55

在线测验 55

程序设计练习 55

第3章 分支语句 60

3.1 引言 60

3.2 bool数据类型 61

3.3 if语句 62

3.4 双分支的if-else语句 64

3.5 嵌套的if语句和多分支的if-else语句 65

3.6 常见错误和陷阱 67

3.7 实例研究:计算身体质量指数 71

3.8 实例研究:计算税款 73

3.9 生成随机数 75

3.10 逻辑运算符 77

3.11 实例研究:确定闰年 81

3.12 实例研究:彩票 82

3.13 switch语句 83

3.14 条件表达式 86

3.15 运算符优先级和结合律 88

3.16 调试 89

关键术语 89

本章小结 90

在线测验 90

程序设计练习 90

第4章 数学函数、字符和字符串 99

4.1 引言 99

4.2 数学函数 100

4.2.1 三角函数 100

4.2.2 指数函数 100

4.2.3 近似函数 101

4.2.4 min、max和abs函数 101

4.2.5 实例研究:计算三角形的角 101

4.3 字符数据类型和操作符 103

4.3.1 ASCII码 103

4.3.2 从键盘读取一个字符 104

4.3.3 特殊字符的转义序列 104

4.3.4 数值类型和字符类型之间的相互转换 105

4.3.5 比较和测试字符 106

4.4 实例研究:生成随机字符 107

4.5 实例研究:猜生日 109

4.6 字符函数 112

4.7 实例研究:十六进制转换为十进制 113

4.8 字符串类型 114

4.8.1 字符串索引和下标操作符 115

4.8.2 连接字符串 116

4.8.3 比较字符串 116

4.8.4 读字符串 116

4.9 实例研究:使用字符串修改彩票程序 118

4.10 格式化控制台输出 119

4.10.1 setprecision(n)操作 120

4.10.2 修改操作 121

4.10.3 showpoint操作 121

4.10.4 setw(width)操作 122

4.10.5 left和right操作 122

4.11 简单的文件输入输出 123

4.11.1 写入文件 124

4.11.2 读取一个文件 125

关键术语 126

本章小结 126

在线测验 127

程序设计练习 127

第5章 循环 132

5.1 引言 132

5.2 while循环 133

5.2.1 实例研究:猜数字 135

5.2.2 循环设计策略 138

5.2.3 实例研究:多道减法测试 138

5.2.4 使用用户的确认控制循环 140

5.2.5 使用标记值控制循环 140

5.2.6 输入和输出重定向 141

5.2.7 从一个文件中读取所有的数据 142

5.3 do-while循环 144

5.4 for循环 145

5.5 使用哪种循环 149

5.6 嵌套循环 150

5.7 最小化数字错误 152

5.8 实例研究 153

5.8.1 求最大公约数 153

5.8.2 预测未来的学费 155

5.8.3 蒙特卡罗模拟 156

5.8.4 十进制转换为十六进制 156

5.9 关键字break和continue 158

5.10 实例研究:检查回文 161

5.11 实例研究:输出素数 163

关键术语 165

本章小结 165

在线测验 166

程序设计练习 166

第6章 函数 176

6.1 引言 176

6.2 函数定义 177

6.3 函数调用 178

6.4 无返回值函数 180

6.5 以传值方式传递参数 183

6.6 模块化代码 184

6.7 函数的重载 186

6.8 函数原型 189

6.9 缺省参数 190

6.10 内联函数 191

6.11 局部、全局和静态局部变量 192

6.11.1 for循环中变量的作用域 194

6.11.2 静态局部变量 194

6.12 以引用方式传递参数 197

6.13 常量引用参数 205

6.14 实例研究:十六进制转换为十进制 205

6.15 函数抽象和逐步求精 207

6.15.1 自顶向下设计 208

6.15.2 自顶向下或自底向上实现 209

6.15.3 实现细节 210

6.15.4 逐步求精的好处 214

关键术语 214

本章小结 215

在线测验 215

程序设计练习 215

第7章 一维数组和C字符串 225

7.1 引言 225

7.2 数组基础 226

7.2.1 声明数组 226

7.2.2 访问数组元素 227

7.2.3 数组初始化语句 228

7.2.4 处理数组 229

7.3 问题:彩票号码 232

7.4 问题:一副纸牌 235

7.5 数组作为函数参数 237

7.6 防止函数修改传递参数的数组 238

7.7 数组作为函数值返回 240

7.8 问题:计算每个字符的出现次数 241

7.9 搜索数组 244

7.9.1 顺序搜索方法 244

7.9.2 二分搜索方法 245

7.10 排序数组 247

7.11 C字符串 249

7.11.1 输入和输出C字符串 249

7.11.2 C字符串函数 250

7.11.3 使用strcpy和strncpy函数复制字符串 251

7.11.4 使用strcat和strncat函数拼接字符串 251

7.11.5 使用strcmp函数比较字符串 252

7.11.6 字符串和数字之间的转换 252

关键术语 253

本章小结 254

在线测验 254

程序设计练习 254

第8章 多维数组 263

8.1 引言 263

8.2 声明二维数组 263

8.3 操作二维数组 264

8.4 二维数组作为函数参数 267

8.5 问题:评定多项选择测试的成绩 268

8.6 问题:找最近邻点对 269

8.7 问题:数独 271

8.8 多维数组 274

8.8.1 问题:每日温度与湿度 275

8.8.2 问题:猜生日 277

本章小结 278

在线测验 278

程序设计练习 278

第二部分 面向对象编程 292

第9章 对象和类 292

9.1 引言 292

9.2 声明类 292

9.3 例:定义类和创建对象 294

9.4 构造函数 297

9.5 创建及使用对象 298

9.6 类定义和类实现的分离 301

9.7 避免多次包含 303

9.8 类中的内联函数 305

9.9 数据域封装 305

9.10 变量作用域 308

9.11 类抽象和封装 310

关键术语 314

本章小结 314

在线测验 315

程序设计练习 315

第10章 面向对象思想 318

10.1 引言 318

10.2 string类 318

10.2.1 构造一个字符串 319

10.2.2 追加字符串 319

10.2.3 字符串赋值 319

10.2.4 函数at、clear、erase及empty 320

10.2.5 函数length、size、capacity和c_str() 320

10.2.6 字符串比较 321

10.2.7 获取子串 321

10.2.8 字符串搜索 322

10.2.9 字符串插入和替换 322

10.2.10 字符串运算符 323

10.2.11 把数字转换为字符串 324

10.2.12 字符串分割 324

10.2.13 实例研究:字符串替换 324

10.3 对象作为函数参数 327

10.4 对象数组 329

10.5 实例成员和静态成员 331

10.6 只读成员函数 335

10.7 从对象的角度思考 337

10.8 对象合成 342

10.9 实例研究:StackOfIntegers类 344

10.10类设计准则 346

10.10.1 内聚 346

10.10.2 一致 346

10.10.3 封装 347

10.10.4 清晰 347

10.10.5 完整 347

10.10.6 实例与静态 347

关键术语 348

本章小结 348

在线测验 348

程序设计练习 348

第11章 指针及动态内存管理 353

11.1 引言 353

11.2 指针基础 353

11.3 用typedef定义同义类型 359

11.4 常量指针 359

11.5 数组和指针 360

11.6 函数调用时传递指针参数 363

11.7 从函数中返回指针 367

11.8 有用的数组函数 368

11.9 动态持久内存分配 369

11.10 创建及访问动态对象 373

11.11 this指针 375

11.12 析构函数 376

11.13 实例研究:Course类 379

11.14 拷贝构造函数 382

11.15 自定义拷贝构造函数 384

关键术语 387

本章小结 387

在线测验 388

程序设计练习 388

第12章 模板、向量和栈 393

12.1 引言 393

12.2 模板基础 393

12.3 例:一个通用排序函数 397

12.4 模板类 399

12.5 改进Stack类 405

12.6 C++向量类 407

12.7 用vector类替换数组 410

12.8 实例研究:表达式计算 413

关键术语 417

本章小结 417

在线测验 417

程序设计练习 418

第13章 文件输入输出 424

13.1 引言 424

13.2 文本输入输出 425

13.2.1 向文件中写入数据 425

13.2.2 从文件中读取数据 426

13.2.3 检测文件是否存在 427

13.2.4 检测文件结束 427

13.2.5 让用户输入文件名 429

13.3 格式化输出 430

13.4 函数:getline、get和put 431

13.5 fstream和文件打开模式 434

13.6 检测流状态 435

13.7 二进制输入输出 437

13.7.1 write函数 438

13.7.2 read函数 439

13.7.3 例:二进制数组I/O 440

13.7.4 例:二进制对象I/O 440

13.8 随机访问文件 444

13.9 更新文件 447

关键术语 448

本章小结 448

在线测验 448

程序设计练习 449

第14章 运算符重载 452

14.1 引言 452

14.2 Rational类 453

14.3 运算符函数 458

14.4 重载[]运算符 460

14.5 重载简写运算符 462

14.6 重载一元运算符 462

14.7 重载++和--运算符 463

14.8 友元函数和友元类 464

14.9 重载<<和>>运算符 466

14.10 自动类型转换 468

14.10.1 转换为基本数据类型 468

14.10.2 转换为对象类型 469

14.11 定义重载运算符的非成员函数 469

14.12 带有重载运算符函数的Rational类 470

14.13 重载赋值运算符 477

关键术语 481

本章小结 481

在线测验 481

程序设计练习 481

第15章 继承和多态 484

15.1 引言 484

15.2 基类和派生类 484

15.3 泛型程序设计 492

15.4 构造函数和析构函数 493

15.4.1 调用基类构造函数 493

15.4.2 构造函数链和析构函数链 494

15.5 函数重定义 497

15.6 多态 499

15.7 虚函数和动态绑定 500

15.8 关键字protected 503

15.9 抽象类和纯虚函数 504

15.10 类型转换:static cast和dynamic_cast 512

关键术语 515

本章小结 516

在线测验 516

程序设计练习 517

第16章 异常处理 518

16.1 引言 518

16.2 异常处理概述 518

16.3 异常处理机制的优点 522

16.4 异常类 523

16.5 自定义异常类 527

16.6 多重异常捕获 531

16.7 异常的传播 535

16.8 重抛出异常 537

16.9 异常说明 538

16.10 何时使用异常机制 539

关键术语 540

本章小结 540

在线测验 540

程序设计练习 541

第三部分 算法和数据结构 544

第17章 递归 544

17.1 引言 544

17.2 例:阶乘 545

17.3 实例研究:斐波那契数 548

17.4 用递归方法求解问题 550

17.5 递归辅助函数 552

17.5.1 选择排序 553

17.5.2 二分搜索 555

17.6 汉诺塔 556

17.7 八皇后问题 559

17.8 递归与循环 561

17.9 尾递归 562

关键术语 563

本章小结 563

在线测验 563

程序设计练习 563

第18章 开发高效的算法 568

第19章 排序 568

第20章 链表、队列和优先队列 568

第21章 二分搜索树 568

第22章 STL容器 568

第23章 STL算法 568

第24章 图及其应用 568

第25章 加权图及其应用 568

第26章 平衡二叉树和伸展树 568

附录 568

附录A C++关键字 568

附录B ASCII字符集 569

附录C 运算符优先级表 570

附录D 数字系统 572

附录E 位运算 575