《C++程序设计 含选读内容和实验指导》PDF下载

  • 购买积分:21 如何计算积分?
  • 作  者:Angela B.Shiflet,Paul A.Nagin,John S.Hinkel等著;夏兆彦,孙岩等译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2004
  • ISBN:7302091455
  • 页数:776 页
图书介绍:本书系统全面地介绍了C++程序设计的原理和技术,包含大量示例、选读内容和实验指导,合适作为计算机及相关专业本科生的程序设计课程教材。

目录 1

第1章 计算机科学基础 1

1.1.1 解决问题综述 2

1.1 用计算机解决问题 2

1.1.3 设计一个解决方案 3

1.1.2 分析问题 3

1.1.7 总结 6

1.1.6 产品维护 6

1.1.4 设计的实现 6

1.1.5 测试代码 6

1.2 选读:计算机学科 7

1.1.8 练习 7

1.2.3 设计规范 8

1.2.2 抽象化规范 8

1.2.1 理论规范 8

1.3.2 外存 9

1.3.1 输入和输出设备 9

1.3 计算机系统模型 9

1.3.3 中央处理器 10

1.3.5 练习 11

1.3.4 内存 11

1.4 选读:第一台计算机的发明 12

1.5.2 预处理器 13

1.5.1 编辑器 13

练习 13

1.5 完成一个程序的步骤 13

1.5.3 编译器 14

1.6 选读:C和C+4的历史 16

1.5.4 连接器 16

1.7 设计的实现 17

1.7.1 一个显示一条消息的程序 18

1.7.3 包括iostream 19

1.7.2 注释 19

1.7.5 main 20

1.7.4 命名空间 20

1.7.7 分号 21

1.7.6 插入运算符 21

1.7.8 样式 22

1.7.9 练习 23

1.7.10 编程项目 24

1.8.1 使用库函数 25

1.8 从上到下的设计和函数 25

1.8.2 将函数连接到从上到下的设计 26

1.8.3 函数定义 27

1.8.4 调用一个函数 28

1.8.5 函数原型 29

1.8.6 C++库 30

1.8.8 编程项目 32

1.8.7 练习 32

1.9 选读:计算机科学主题范围 33

1.9.3 体系结构和组织 34

1.9.2 离散结构 34

1.9.1 编程、算法和复杂性 34

1.9.6 信息处理 35

1.9.5 智能系统 35

1.9.4 以网络为中心的计算 35

1.9.9 计算的科学和数字的方法 36

1.9.8 图形和可视化计算 36

1.9.7 人机交互 36

1.9.10 操作系统 37

1.9.13 社会的和专业的问题 38

1.9.12 软件工程 38

1.9.11 编程语言 38

1.10.2 预排技术 39

1.10.1 调试 39

1.10 编程和调试提示 39

1.11 复习题 40

1.10.3 模块化的编程 40

1.12 实验 41

2.1 整型数据 44

第2章 整型变量和表达式 44

2.1.2 变量声明 45

2.1.1 变量 45

2.1.3 变量的命名 46

2.2 赋值语句 48

2.1.4 练习 48

2.2.1 左值和右值 49

2.2.3 常量 51

2.2.2 声明-初始化 51

2.2.4 赋值语句不是代数公式 53

2.2.7 练习 54

2.2.6 endl 54

2.2.5 标记输出 54

2.2.8 编程项目 55

2.3.1 四个二元运算符 56

2.3 整数算术 56

2.3.2 取模运算符 58

2.3.4 运算符优先次序 61

2.3.3 一元减法 61

2.3.5 练习 63

2.3.6 编程项目 65

2.4.1 整数的二进制表示法 66

2.4 选读:计算机中整数的存储 66

2.4.2 计算 67

2.4.4 计算机中无符号整数的范围 68

2.4.3 递减 68

2.4.5 十进制整数到二进制整数的转换 69

2.4.6 练习 70

2.5.1 符号位表示法 72

2.5 选读:计算机中的整数算术 72

2.4.7 编程项目 72

2.5.2 2的补码表示法 73

2.5.3 加法 75

2.5.4 减法 76

2.5.6 练习 77

2.5.5 乘以和除以2 77

2.6.2 C++中交互式的程序 79

2.6.1 交互式的程序与批处理程序 79

2.5.7 编程项目 79

2.6 交互式的程序 79

2.6.4 编程项目 81

2.6.3 练习 81

2.7.2 用户接口的明了性 82

2.7.1 代码的明了性 82

2.7 编程和调试提示 82

2.8 复习题 83

2.9 实验 84

3.1.1 事前条件和事后条件 87

3.1 用整型函数解决问题 87

第3章 整型函数和封装 87

3.1.2 函数的分析和设计 89

3.1.3 整型函数的实现 90

3.1.4 过程 91

3.1.5 变元和参数 94

3.1.6 练习 98

3.2 重新访问问题的解决 99

3.1.7 编程项目 99

3.2.1 分析 100

3.3.1 局部变量和作用域 101

3.3 作用域和生存期 101

3.2.2 练习 101

3.3.2 值传递 102

3.3.3 具有相同名称的局部变量 104

3.3.4 全局变量 105

3.3.5 被重新访问的命名空间 108

3.3.6 练习 109

3.4.1 抽象化 110

3.4 用对象封装 110

3.4.2 面向对象编程 111

3.4.3 信息隐藏和类 112

3.4.4 类图 113

3.4.5 对象 114

3.4.6 练习 115

3.5.1 注释的明了性 116

3.5 编程和调试提示 116

3.4.7 编程项目 116

3.6 复习题 117

3.5.2 局部变量及全局变量 117

3.7 实验 118

第4章 做出决策和类 124

4.1.1 关系运算符 125

4.1 关系和逻辑运算符 125

4.1.2 逻辑运算符 126

4.1.3 布尔常量、表达式和变量 128

4.1.4 运算符优先次序 129

4.1.5 练习 130

4.2.2 if语句 132

4.2.1 控制流 132

4.2 选择 132

4.2.3 if-else语句 134

4.2.4 条件表达式运算符 139

4.2.5 练习 140

4.2.6 编程项目 141

4.3 嵌套 142

4.3.1 练习 149

4.4.1 swish语句 151

4.4 多向选择 151

4.3.2 编程项目 151

4.4.3 练习 159

4.4.2 转移到相同点 159

4.4.4 编程项目 161

4.5.1 访问数据结构 162

4.5 定义方法 162

4.5.3 方法定义文件 163

4.5.2 头文件 163

4.5.4 练习 166

4.6.2 逻辑的基本组件 167

4.6.1 GeorgeBoole和Edmund Berkeley 167

4.5.5 编程项目 167

4.6 选读:逻辑 167

4.6.3 真值表 168

4.6.4 命题代数 169

4.6.5 德·摩根定律 170

4.6.6 练习 171

4.7.1 从上至下测试 172

4.7 测试模式 172

4.7.2 从下至上的测试 175

4.7.3 从上至下和从下至上的组合测试 176

4.7.4 类测试 177

4.7.5 练习 178

4.8.1 决策控制结构 179

4.8 编程及调试提示 179

4.8.2 测试 180

4.9 复习题 181

4.10 实验方法 182

第5章 更多数值型类型和多态性 191

5.1.1 整数和浮点数的区别 192

5.1 浮点数 192

5.1.2 浮点数运算 193

5.1.4 double类型 194

5.1.3 指数记数法 194

5.1.5 格式化输出 195

5.1.6 练习 197

5.1.7 编程项目 198

5.2 多态性 199

5.2.1 练习 202

5.3.1 定义和使用 203

5.3 构造函数 203

5.2.2 编程项目 203

5.3.2 多态构造函数 204

5.3.4 编程项目 205

5.3.3 练习 205

5.4.1 从Base2到Base10的转换 206

5.4 选读:浮点数的存储 206

5.4.2 从Base10到Base2的转换 207

5.4.4 浮点数的存储 208

5.4.3 乘以和除以2 208

5.4.5 截断错误 210

5.4.6 练习 212

5.5.1 隐式的强制转换 213

5.5 强制转换 213

5.5.2 显式的强制转换 214

5.5.3 强与弱类型化 215

5.5.4 练习 216

5.6.1 整数的不同大小 217

5.6 其他整型类型 217

5.5.5 编程项目 217

5.6.4 抽象数据类型Money 218

5.6.3 混合型运算 218

5.6.2 无符号整数 218

5.6.5 ADT Money的实现 220

5.6.6 练习 226

5.7.1 数值型常量 228

5.7 C++头文件 228

5.6.7 编程项目 228

5.7.2 绝对值函数 230

5.7.4 其他cmath库函数 231

5.7.3 平方根函数 231

5.7.5 练习 239

5.7.6 编程项目 240

5.8.1 函数间的接口:全局变量 241

5.8 编程和调试提示 241

5.8.3 读者对于接口的理解 242

5.8.2 常量 242

5.9 复习题 243

5.8.4 默认的构造函数 243

5.10 实验 244

第6章 循环 250

6.1 更新赋值运算符 251

6.1.1 递增和递减运算符 252

6.1.3 练习 253

6.1.2 先递增、递减运算和后递增、递减运算 253

6.2.1 while循环 254

6.2 预测试循环 254

6.2.2 无限循环 257

6.2.3 预测试循环的特性 257

6.2.4 循环变量的操作 259

6.2.5 练习 263

6.3.1 do-while循环 265

6.3 后测试循环 265

6.2.6 编程项目 265

6.3.2 应用 266

6.3.3 练习 272

6.3.4 编程项目 273

6.4.1 标记技术 274

6.4 循环和交互式程序 274

6.4.2 交互式程序中的随机数 276

6.4.3 为随机数生成器提供种子 277

6.4.4 随机数范围 278

6.4.6 编程项目 285

6.4.5 练习 285

6.5.1 结构化编程 287

6.5 结构化和面向对象编程 287

6.6 选读:计算机时间 288

6.5.2 面向对象编程 288

6.6.1 时钟周期 289

6.6.3 flops 290

6.6.2 时钟频率 290

6.6.4 练习 291

6.7 选读:循环中的截断错误 292

练习 294

6.8.2 赋值和关系等号运算符 295

6.8.1 在运算符之间使用空格和括号 295

6.8 编程和调试提示 295

6.9 复习题 296

6.10 实验 297

7.1 for循环 299

第7章 计数器控制的循环 299

7.1.1 循环选择 301

7.1.3 索引声明 302

7.1.2 倒数 302

7.1.4 表 303

7.1.5 练习 306

7.1.6 编程项目 307

7.2 循环嵌套 308

7.2.1 练习 319

7.2.2 编程项目 320

7.3 选读:数值计算 321

编程项目 325

7.4.1 版权法 326

7.4 选读:知识产权 326

7.4.2 专利权 327

调试技术 328

7.5 编程和调试提示 328

7.4.3 公司的态度 328

7.4.4 练习 328

7.6 复习题 329

7.7 实验 330

8.1 字符输入和输出 333

第8章 字符 333

8.1.1 缓冲区 335

8.1.2 Y/N响应 339

8.1.4 编程项目 343

8.1.3 练习 343

8.2.1 数字代码 344

8.2 ASCII编码方案 344

8.2.3 转义序列 347

8.2.2 字符型数字的等价整数 347

8.2.4 练习 349

8.2.5 编程项目 350

8.3.1 改变大小写 351

8.3 字符型函数 351

8.3.2 布尔字符型函数 354

8.3.3 练习 359

8.4.1 转换为十进制数字 360

8.4 选读:八进制和十六进制系统 360

8.3.4 编程项目 360

8.4.2 在二进制和十六进制数字系统之间转换 361

8.4.4 应用 362

8.4.3 常量 362

8.4.5 将十进制数字转换为十六进制 363

8.4.6 练习 364

8.5.1 保护性编程:检测和恢复 365

8.5 编程和调试提示 365

8.5.3 保护性编程:全层次“防弹” 366

8.5.2 保护性编程:以字符串格式读取数据 366

8.6 复习题 367

8.7 实验 368

9.1 继承性 376

第9章 继承性和文件 376

练习 378

9.2.1 文件I/O 379

9.2 文件I/O类 379

9.2.4 关闭和打开文件 382

9.2.3 格式化的I/O 382

9.2.2 读取字符 382

9.2.5 练习 383

9.3.2 作为参数的简单变量 384

9.3.1 值传递 384

9.2.6 编程项目 384

9.3 引用传递 384

9.3.3 参数流 388

9.3.4 练习 390

9.4.1 磁带存储 391

9.4 选读:外存 391

9.3.5 编程项目 391

9.4.2 磁盘存储 393

9.4.4 练习 395

9.4.3 CD-ROM 395

9.5 选读:机器和汇编语言 396

9.5.2 机器指令 397

9.5.1 机器体系结构 397

9.5.3 取数/执行周期 399

9.5.4 转移 401

9.5.5 CPU模拟器程序cpusim 404

9.5.6 练习 406

9.6.2 调试级别 407

9.6.1 条件编译调试 407

9.6 编程和调试提示 407

9.6.3 使用assert调试 408

9.7 复习题 409

CPU模拟器 410

9.8 实验 410

文件操作 412

9.9 另一个实验 412

第10章 数组和vector类 416

10.1.1 声明 417

10.1 什么是数组 417

10.1.3 数组索引 418

10.1.2 赋值 418

10.1.4 声明-初始化 424

10.1.5 练习 425

10.2.1 传递数组 426

10.2 含有数组参数的函数 426

10.1.6 编程项目 426

10.2.2 最小值和最大值 429

10.2.3 频率 431

10.2.4 练习 434

10.2.5 编程项目 435

10.3 数组和类 437

10.3.1 对象数组 438

10.3.2 作为成员数据的数组 439

10.3.3 练习 444

10.4.1 按序搜索 445

10.4 按序搜索和二分法搜索 445

10.3.4 编程项目 445

10.4.2 二分法搜索 447

10.4.3 练习 451

10.5.1 选择分类算法 453

10.5 选择分类 453

10.4.4 编程项目 453

10.5.2 最小元素的索引 454

10.5.3 交换数值 455

10.5.4 练习 456

10.6.1 模板化的函数 457

10.6 模板 457

10.5.5 编程项目 457

10.6.3 模板化的类方法的定义 459

10.6.2 模板化的类的接口 459

10.6.4 应用程序编程 460

10.6.5 模板的使用 461

10.6.7 编程项目 462

10.6.6 练习 462

10.7.2 范围检查 463

10.7.1 数组的局限性 463

10.7 vector类 463

10.7.4 C++vector类 464

10.7.3 动态分配 464

10.7.5 常量的大小和重新设定大小 465

10.7.6 编索引 466

10.7.7 测试程序 467

10.7.8 练习 468

10.8 多维数组和向量 469

10.7.9 编程项目 469

10.8.2 声明 470

10.8.1 索引 470

10.8.3 多维向量 479

10.8.4 练习 481

10.8.5 编程项目 482

10.9 选读:计算机图形的色彩 485

10.9.2 色彩查找表 486

10.9.1 显示设备 486

10.9.3 练习 487

10.10.2 测试分支的数据 488

10.10.1 选择测试数据:边界数据 488

10.10 编程和调试提示 488

10.11 复习题 489

10.10.3 初学者或使用随机数据进行的测试 489

10.12 实验 490

11.1 字符串 495

第11章 字符串和string类 495

11.1.1 字面量 496

11.1.3 使用析取运算符读取字符串 497

11.1.2 显示字符串 497

11.1.4 读取一个字符或一行字符 499

11.1.5 字符的二维数组 502

11.1.6 练习 503

11.1.7 编程项目 504

11.2 数据验证 505

11.2.1 练习 510

11.3.1 存储大小 511

11.3 一些C字符串函数 511

11.2.2 编程项目 511

11.3.2 字符串的长度 512

11.3.3 复制字符串 512

11.3.4 并置 513

11.3.6 编程项目 514

11.3.5 练习 514

11.4.1 比较函数 516

11.4 字符串的比较 516

11.4.2 练习 527

11.4.3 编程项目 528

11.5.1 C字符串的弊端 529

11.5 string类 529

11.5.3 重载运算符 530

11.5.2 构造函数 530

11.5.5 子串 531

11.5.4 长度 531

11.5.6 非成员函数 534

11.5.8 练习 535

1 1.5.7 C字符串与C++字符串的对比 535

11.5.9 编程项目 536

11.6 选读:软件的生存周期 537

11.6.1 分析 538

11.6.2 设计 540

11.6.3 实现和测试 541

11.7.1 验证 542

11.7 编程和调试提示 542

11.6.4 维护 542

11.6.5 练习 542

11.7.4 注释掉 543

11.7.3 分号和结束大括号 543

11.7.2 字符串比较 543

11.8 复习题 544

11.9 实验 545

12.1.1 声明 554

12.1 结构的概念 554

第12章 结构和枚举类型 554

12.1.2 成员的引用 556

12.1.4 结构的成员 557

12.1.3 逐一处理元素 557

12.1.5 结构数组 558

12.1.6 练习 566

12.1.7 编程项目 567

12.2.1 传统的文件处理 569

12.2 选读:数据库 569

12.2.3 关系数据库 571

12.2.2 数据库管理系统 571

12.2.5 编程项目 573

12.2.4 练习 573

12.3.1 实现 574

12.3 枚举类型 574

12.3.2 强制转换 575

12.3.3 练习 580

12.4 选读:计算机视觉 581

12.3.4 编程项目 581

12.4.1 数字图像 582

12.4.2 低级模型 584

12.4.3 一个低级处理的示例 585

12.4.4 高级模型 591

12.4.6 编程项目 593

12.4.5 练习 593

有数组元素的结构 594

12.5 编程和调试提示 594

12.7 实验 595

12.6 复习题 595

13.1 递归函数 601

第13章 递归 601

13.1.1 幂函数 608

13.1.2 练习 613

13.1.3 编程项目 617

13.2 递归与迭代 620

13.2.1 解决一个递归的例程 621

13.2.2 练习 622

13.3.1 BNF 623

13.3 选读:形式语法 623

13.2.3 编程项目 623

13.3.2 语法分析 624

13.3.3 练习 627

13.3.4 编程项目 629

13.4.2 程序正确性 630

13.4.1 运行时错误和缓冲 630

13.4 编程和调试提示 630

13.6 实验 631

13.5 复习题 631

第14章 指针 638

14.1.2 地址运算符 639

14.1.1 声明 639

14.1 指针的概念 639

14.1.3 间接寻址运算符 640

14.1.4 NULL 641

14.1.5 打印地址 642

14.1.7 练习 645

14.1.6 在间接引用之前指向目标 645

14.2 选读:存储器 647

14.2.1 存储器大小 648

14.2.2 RAM和ROM 649

14.2.4 编程项目 650

14.2.3 练习 650

14.3.1 数组名作为一个常量指针 651

14.3 数组和指针 651

14.3.2 参数 652

14.3.3 指针算术 653

14.3.4 练习 654

14.4 动态内存分配 655

14.3.5 编程项目 655

14.4.2 释放内存 656

14.4.1 分配内存 656

14.4.4 编程项目 660

14.4.3 练习 660

14.5.2 创建和销毁 661

14.5.1 析构函数 661

14.5 指针数据成员 661

14.5.3 复制构造函数 664

14.5.4 重载赋值运算符 667

14.5.5 练习 670

14.6.1 头文件中的类型定义 671

14.6 用户定义的类型 671

14.7.1 间接引用 673

14.7 指针和结构 673

14.6.2 练习 673

14.7.2 链表 674

14.7.3 练习 676

14.8.1 声明和赋值 677

14.8 函数指针 677

14.8.3 函数指针作为参数 678

14.8.2 间接调用函数 678

14.8.5 编程项目 682

14.8.4 练习 682

14.9.1 指针事后递增 683

14.9 编程和调试提示 683

14.10 复习题 685

14.9.2 空间的分配 685

14.11 实验 686

15.1 表抽象化 691

第15章 数据结构 691

15.1.2 图示当前位置 692

15.1.1 ADT表的定义 692

15.1.3 图示插入 694

15.1.4 图示删除 695

15.1.5 图示存储和检索 696

15.1.7 创建表 697

15.1.6 销毁表 697

15.1.8 表遍历 698

15.1.9 练习 699

15.2.1 表创建 700

15.2 表的动态实现 700

15.2.2 初始化表 701

15.2.4 头或尾处的当前位置 702

15.2.3 测试空或满 702

15.2.5 推进当前位置 703

15.2.6 创建节点 704

15.2.7 插入节点 705

15.2.8 删除节点 708

15.2.9 存储和检索信息 711

15.2.10 显示表 718

15.2.11 练习 719

15.2.12 编程项目 720

15.3 堆栈抽象化 721

15.3.1 ADT堆栈的定义 722

15.3.2 另外的操作 723

15.3.3 练习题 726

15.4 堆栈的动态实现 727

15.4.2 堆栈的初始化和测试 728

15.4.1 堆栈的框架 728

15.4.4 出栈 729

15.4.3 进栈 729

15.4.5 销毁堆栈 730

15.4.6 使用堆栈数据结构 734

15.4.7 练习 735

15.5 选读:运行时堆栈 736

15.4.8 编程项目 736

15.6.2 内部限制 739

15.6.1 释放指针 739

15.5.1 练习题 739

15.5.2 编程项目 739

15.6 编程和调试提示 739

15.8 实验 740

15.7 复习题 740

附录A 挑选的练习的答案 744

附录B 复习题答案 764