当前位置:首页 > 工业技术
国外计算机科学经典教材  C++基础教程  从问题分析到程序设计  第2版
国外计算机科学经典教材  C++基础教程  从问题分析到程序设计  第2版

国外计算机科学经典教材 C++基础教程 从问题分析到程序设计 第2版PDF电子书下载

工业技术

  • 电子书积分:25 积分如何计算积分?
  • 作 者:(美)D.S.MALIK著;曹蓉蓉 宋红译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2006
  • ISBN:7302121680
  • 页数:993 页
图书介绍:本书以实践为指导,清楚而简明地解释了一些关键的C++概念。详尽地讨论了一些核心主题,如输入/输出、控制结构、数组和类等。
《国外计算机科学经典教材 C++基础教程 从问题分析到程序设计 第2版》目录

目录 1

第1章 计算机和编程语言概述 1

1.1 简介 1

1.2 概述计算机的发展史 2

1.3 计算机系统的描述 2

1.3.1 硬件 2

1.3.2 软件 4

1.4 计算机语言 4

1.5 编程语言的发展史 5

1.6 高级语言程序的执行 6

1.7 问题分析-编码-执行周期的编程 8

1.8 编程方法 12

1.8.1 结构化编程 12

1.8.2 面向对象编程 12

1.9 ANSI/ISO标准C++ 13

1.10 快速回顾 14

1.11 练习题 15

第2章 C++的基本元素 17

2.1 C++基础知识 18

2.1.1 特殊字符 19

2.1.2 关键字 19

2.1.3 标识符 19

2.2 数据类型 20

2.2.1 基本数据类型 21

2.2.2 浮点数据类型 23

2.2.3 string数据类型 24

2.3 算术运算符和运算符的优先级 25

2.4 表达式 28

2.4.1 混合表达式 28

2.4.2 类型转换(强制转换) 30

2.5.1 为常量和变量分配内存 31

2.5 输入 31

2.5.2 对变量赋值 33

2.6 递增运算符和递减运算符 40

2.7 输出 42

2.8 预处理指令 48

2.9 创建C++程序 50

2.10 编程风格和方式 53

2.10.1 语法 53

2.10.2 文档 55

2.11 更多的赋值语句 56

2.12 编程示例:换算长度 57

2.12.1 问题分析和算法设计 57

2.12.4 主算法 58

2.12.5 综合 58

2.12.3 指定常量 58

2.12.2 变量 58

2.13 编程示例:美分找零 60

2.13.1 问题分析和算法设计 60

2.13.2 变量 61

2.13.3 指定常量 61

2.13.4 主算法 62

2.14 快速回顾 63

2.15 练习题 65

2.16 编程练习 71

第3章 输入/输出 74

3.1 I/O流和标准I/O设备 74

3.2 在程序中使用预定义函数 79

3.2.1 cin和ignore函数………………8l3.2.2 putback和peek函数 82

3.2.3 注意I/Ostream变量和I/O函数之间的点号 84

3.3 输入错误 84

3.4 输出和格式化输出 87

3.4.3 操作符showpoint 88

3.4.2 操作符fixed 88

3.4.1 操作符setprecision 88

3.4.4 操作符setw 90

3.4.5 操作符flush 92

3.5 附加的输出格式化工具 93

3.5.1 操作符setfill 93

3.5.2 操作符left和right 95

3.6 输入/输出和string类型 96

3.7 文件输入/输出 97

3.8 编程示例:售电影票和向慈善机构捐赠 100

3.8.1 问题分析和算法设计 101

3.8.2 变量 101

3.8.3 格式化输出 102

3.8.4 主算法 102

3.8.5 完整的程序清单 103

3.9.2 变量 105

3.9.1 问题分析和算法设计 105

3.9 编程示例:学生分数 105

3.9.3 主算法 106

3.9.4 完整的程序清单 106

3.10 快速回顾 107

3.11 练习题 109

3.12 编程练习 111

第4章 控制结构Ⅰ 114

4.1 控制结构 114

4.2 关系运算符 115

4.3 关系运算符和基本数据类型 116

4.4 关系运算符和string类型 118

4.5 逻辑(布尔)运算符和逻辑表达式 119

4.6 优先顺序 120

4.6.1 快速求值法 124

4.6.2 int数据类型和逻辑(布尔)表达式 124

4.6.3 bool数据类型和逻辑(布尔)表达式 125

4.7.1 单选 126

4.7 选择结构:if和if...else语句 126

4.7.2 双选 128

4.7.3 复合语句(块) 131

4.7.4 多选:嵌套if语句 131

4.7.5 将if...else语句与if语句进行比较 134

4.7.6 使用伪代码开发、测验和调试程序 135

4.7.7 输入失败和if语句 137

4.7.8 等于运算符(=)和赋值运算符(=)之间的混淆 140

4.7.9 条件运算符(?:) 141

4.8 switch语句 141

4.9 利用assert函数终止程序 147

4.10 编程示例:有线电视公司的收费单 148

4.10.1 问题分析和算法设计 149

4.10.2 变量 149

4.10.4 公式 150

4.10.3 指定的常量 150

4.10.5 主算法 151

4.11 快速回顾 153

4.12 练习题 154

4.13 编程练习 159

第5章 控制结构Ⅱ(循环) 161

5.1 为什么需要循环语句 161

5.2 while循环结构 162

5.2.1 案例1:使用控制计数器的while循环 165

5.2.2 案例2:使用标记控制的while循环 167

5.2.3 案例3:标志控制的while循环 171

5.2.4 案例4:EOF控制的while循环 171

5.3 编程示例:检查支票账户余额 173

5.3.1 问题分析和算法设计 173

5.3.2 主算法 176

5.3.3 完整的程序清单 177

5.4 编程示例:斐波纳契数列 180

5.4.1 问题分析和算法设计 181

5.4.2 主算法 181

5.4.3 完整的程序清单 182

5.5 for循环结构 184

5.6 编程示例:分类数字 189

5.6.1 问题分析和算法设计 189

5.6.2 主算法 190

5.6.3 完整的程序清单 190

5.7 do...while循环结构 192

5.8 break语句和continue语句 195

5.9 嵌套控制结构 196

5.10 快速回顾 203

5.11 练习题 204

5.12 编程练习 214

6.1 预定义函数 216

第6章 用户定义的函数Ⅰ 216

6.2 用户定义的函数 218

6.3 返回值函数 219

6.3.1 return语句 221

6.3.2 函数原型 224

6.3.3 程序的执行流程 229

6.4 编程示例:最大数 229

6.4.1 问题分析和算法设计 230

6.4.2 完整的程序清单 230

6.5 编程示例:有线电视公司 231

6.5.1 问题分析和算法设计 231

6.5.2 主算法(main函数): 233

6.5.3 完整的程序清单 233

6.6 快速回顾 236

6.7 练习题 237

6.8 编程练习 241

第7章 用户定义的函数Ⅱ 243

7.1 void函数 243

7.1.1 不带参数的void函数 243

7.1.2 带参数的void函数 246

7.2 值参数 249

7.3 将引用变量作为参数 251

7.4 值参数和引用参数以及内存分配 254

7.5 引用参数和返回值函数 265

7.6 标识符的作用域 265

7.7 全局变量的副作用 268

7.8 静态变量和自动变量 269

7.9 函数重载概述 270

7.10 带默认参数的函数 271

7.11 编程示例:分类数字 273

7.11.2 完整的程序清单 275

7.11.1 主算法 275

7.12 编程示例:数据比较 277

7.12.1 问题分析和算法设计 278

7.12.2 主算法:函数main 281

7.12.3 完整的程序清单 282

7.12.4 条形图 285

7.12.5 函数printBar 286

7.13 快速回顾 287

7.14 练习题 288

7.15 编程练习 294

第8章 用户定义的简单数据类型、命名空间及字符串类型 297

8.1 枚举类型 297

8.1.1 声明变量 299

8.1.2 赋值 299

8.1.3 枚举类型的操作 299

8.1.6 枚举类型的输入和输出 300

8.1.5 枚举类型及循环 300

8.1.4 关系运算符 300

8.1.7 函数和枚举类型 302

8.1.8 在定义枚举类型时声明变量 303

8.1.9 匿名数据类型 303

8.1.10 typedef语句 304

8.2 编程示例:石头、纸和剪刀的游戏 305

8.2.1 问题分析和算法设计 305

8.2.2 主算法 310

8.2.3 完整的程序清单 310

8.3 命名空间 314

8.4 字符串类型 319

8.5 编程示例:大拉丁字符串 328

8.5.1 问题分析和算法设计 329

8.5.2 主算法 331

8.5.3 完整的程序清单 331

8.6 快速回顾 333

8.7 练习题 335

8.8 编程练习 338

第9章 数组以及字符串 340

9.1 数组 341

9.1.1 访问数组元素 342

9.1.2 一维数组的处理 344

9.1.3 数组索引越界 348

9.1.4 声明时初始化数组 348

9.1.5 处理数组时的一些限制 349

9.1.6 将数组作为函数的参数 350

9.1.7 整型数据类型以及数组索引 355

9.2 C-string(字符数组) 356

9.2.1 字符串比较 358

9.2.2 字符串的读写 359

9.2.3 字符串输入 359

9.2.5 在执行期间指定输入/输出文件 360

9.2.4 字符串输出 360

9.4 平行数组 361

9.3 二维数组和多维数组 362

9.4.1 访问数组元素 364

9.4.2 声明时初始化二维数组 365

9.4.3 二维数组和枚举类型 365

9.4.4 二维数组的处理 367

9.4.5 将二维数组作为参数传递给函数 372

9.4.6 字符串数组 374

9.4.7 声明二维数组的其他方法 376

9.5 多维数组 377

9.6 编程示例:代码检测 377

9.6.1 问题分析和算法设计 378

9.6.2 完整的程序清单 381

9.7 编程示例:文本处理 383

9.7.1 问题分析和算法设计 384

9.7.2 完整的程序清单 386

9.8 快速回顾 389

9.9 练习题 390

9.10 编程练习 395

第10章 数组和vector类型的应用 400

10.1 列表处理 400

10.1.1 查找 400

10.1.2 排序列表:冒泡法排序 404

10.1.3 排序列表:选择排序 407

10.1.4 对有序列表进行顺序查找 413

10.1.5 二分查找法 415

10.2 vector类型(类) 419

10.3 编程示例:选举结果 423

10.3.1 问题分析和算法设计 424

10.3.2 完整的程序清单 432

10.4 快速回顾 437

10.5 练习题 438

10.6 编程练习 440

第11章 记录(结构体) 442

11.1 记录(结构体) 442

11.1.1 访问结构体成员 444

11.1.2 赋值 445

11.1.3 比较(关系运算符) 446

11.1.4 输入/输出 447

11.1.5 结构体变量和函数 447

11.1.6 数组与结构体的比较 448

11.1.7 结构体中的数组 448

11.1.8 数组中的结构体 450

11.1.9 结构体中的结构体 452

11.2 编程示例:销售数据分析 455

11.2.1 问题分析和算法设计 456

11.2.2 主算法 463

11.2.3 完整的程序清单 464

11.3 快速回顾 469

11.4 练习题 470

11.5 编程练习 472

第12章 类和数据抽象 475

12.1 类 475

12.1.1 统一建模语言图 478

12.1.2 变量(对象)声明 478

12.1.3 访问类成员 479

12.1.4 对类执行的内置操作 480

12.1.5 赋值运算符和类 480

12.1.6 类的作用域 481

12.1.7 函数和类 481

12.1.8 成员函数的实现 482

12.1.9 访问函数和赋值函数 485

12.1.10 类公有成员和私有成员的次序 491

12.1.11 构造函数 493

12.1.12 调用构造函数 494

12.1.13 类和构造函数 499

12.1.14 类对象(变量)数组和构造函数 500

12.1.15 析构函数 501

12.2 数据抽象化、类和抽象数据类型 502

12.3 结构体和类的比较 504

12.4 信息隐藏 504

12.5 可执行代码 507

12.6 类的静态成员 510

12.7 编程示例:糖果机 515

12.7.1 问题分析和算法设计 515

12.7.2 主程序 519

12.7.3 完整的程序清单 522

12.8 快速回顾 527

12.9 练习题 529

12.10 编程练习 533

第13章 继承和组合 536

13.1 继承 536

13.1.1 重定义(重写)基类的成员函数 538

13.1.2 派生类和基类的构造函数 544

13.1.3 派生类的头文件 550

13.1.4 头文件的多次包含 551

13.1.5 C++流类 552

13.1.6 类的保护成员 553

13.1.7 public、protected或private继承 553

13.2 组合 556

13.3 面向对象设计(OOD)和面向对象的程序设计(OOP) 560

13.4 编程示例:成绩单 562

13.4.1 问题分析和算法设计 564

13.4.2 主程序 573

13.4.3 程序清单 575

13.6 练习题 581

13.5 快速回顾 581

13.7 编程练习 587

第14章 指针、类和虚函数 590

14.1 指针数据类型和指针变量 590

14.2 取地址运算符(&) 591

14.3 复引用运算符(*) 592

14.4 类、结构体和指针变量 597

14.5 初始化指针变量 600

14.6 动态变量 600

14.6.1 运算符new 600

14.6.2 运算符delete 601

14.7 指针变量操作 603

14.8 动态数组 605

14.8.2 指针和函数返回值 607

14.8.1 函数和指针 607

14.9 表层与深层复制和指针 608

14.10 类和指针的一些特性 610

14.10.1 析构函数 610

14.10.2 赋值运算符 611

14.10.3 复制构造函数 612

14.11 继承、指针和虚函数 619

14.12 取地址运算符和类 625

14.13 快速回顾 627

14.14 练习题 629

14.15 编程练习 635

第15章 重载和模板 636

15.1 为什么需要运算符重载 636

15.2 运算符重载 637

15.2.1 运算符函数的语法 637

15.2.3 指针this 638

15.2.2 重载运算符的一些限制 638

15.2.4 类的友元函数 643

15.2.5 作为成员函数和非成员函数的运算符函数 645

15.2.6 重载二元运算符 648

15.2.7 重载流插入运算符(<<)和流提取运算符(>>) 653

15.2.8 重载赋值运算符(=) 657

15.2.9 重载一元运算符 664

15.2.10 重载自增(++)和自减(-)运算符 664

15.2.11 运算符重载:成员和非成员 670

15.2.12 类和指针数据成员(回顾) 670

15.2.13 运算符重载:小结 671

15.3 编程示例clockType 671

15.4 编程示例:复数 677

15.5 重载数组索引(下标)运算符([]) 682

15.6 编程示例:newString 683

15.8.1 函数模板 689

15.8 模板 689

15.7 函数重载 689

15.8.2 类模板 691

15.9 快速回顾 698

15.10 练习题 700

15.11 编程练习 704

第16章 异常处理 710

16.1 处理程序中的异常 710

16.1.1 C++的异常处理机制 714

16.1.2 try/catch块 714

16.1.3 在程序中使用try/catch块 716

16.1.4 使用C++异常类 720

16.2 创建自己的异常类 723

16.3 异常处理技巧 732

16.3.1 终止程序 732

16.3.2 修复错误并继续执行 732

16.4 栈展开 734

16.3.3 记录错误并继续执行 734

16.5 快速回顾 737

16.6 练习题 738

16.7 编程练习 740

第17章 递归 741

17.1 递归定义 741

17.1.1 直接和间接递归 743

17.1.2 无限递归 743

17.2 使用递归解决问题 743

17.3 递归或迭代各自的用途 752

17.4 编程示例:将一个数从二进制转化为十进制 753

17.5 编程示例:将一个数从十进制转化为二进制 756

17.6 快速回顾 759

17.7 练习题 759

17.8 编程练习 762

18.1 链表 765

第18章 链表 765

18.1.1 链表的属性 766

18.1.2 遍历链表 768

18.1.3 项插入和删除 769

18.1.4 构建链表 772

18.2 作为ADT的链表 776

18.2.1 列表的长度 781

18.2.2 检索第一个节点的数据 781

18.2.3 检索最后一个节点的数据 781

18.2.4 查找列表 781

18.2.5 插入第一个节点 782

18.2.6 插入最后一个节点 783

18.2.7 复制列表 787

18.2.9 复制构造函数 789

18.2.10 重载赋值运算符 789

18.2.8 析构函数 789

18.3 有序链表 790

18.4 双向链表 801

18.4.1 默认的构造函数 803

18.4.2 isEmptyList 804

18.4.3 销毁列表 804

18.4.4 初始化列表 804

18.4.5 列表的长度 804

18.4.6 输出列表 805

18.4.7 反向输出列表 805

18.4.8 查找列表 805

18.4.9 第一个和最后一个元素 806

18.5 编程示例:录像带出租店 810

18.5.1 录像带成员 811

18.5.2 顾客成员 821

18.5.3 主程序 823

18.5.4 主程序清单 824

18.6 快速回顾 828

18.7 练习题 828

18.8 编程练习 832

第19章 栈和队列 835

19.1 栈 835

19.2 将栈实现为数组 839

19.2.1 复制栈 845

19.2.2 构造函数和析构函数 846

19.2.3 复制构造函数 846

19.2.4 重载赋值运算符(=) 847

19.2.5 栈的头文件 847

19.3 编程示例:最高GPA 852

19.3.1 程序分析和算法设计 852

19.3.2 完整的程序清单 853

19.4 栈的链实现 855

19.4.1 返回栈顶元素 861

19.4.2 复制栈 863

19.4.3 从类linkedListType派生的栈 867

19.5 栈的应用:后缀表达式计算器 868

19.5.1 主算法 871

19.5.2 完整的程序清单 873

19.6 删除递归:使用非递归算法反向输出链表 877

19.7 队列 882

19.7.1 队列操作 882

19.7.2 将队列实现为数组 883

19.7.3 队列的链实现 892

19.7.4 从类linkedListType派生的队列 896

19.8 队列应用:模拟 899

19.8.1 设计排队系统 900

19.8.2 顾客 901

19.8.3 服务器 903

19.8.4 服务器列表 906

19.8.5 等待顾客队列 909

19.8.6 主程序 911

19.9 快速回顾 917

19.10 练习题 918

19.11 编程练习 921

附录A 保留字 924

附录B 运算符优先级 925

附录C 字符集 926

C.1 ASCII(美国标准信息交换码) 926

C.2 EBCDIC(扩展二进制编码十进制互换代码) 927

附录D 运算符重载 928

附录E 其他C++主题 929

E.1 关于文件输入/输出的更多内容 929

E.1.1 二进制文件 929

E.1.2 随机文件访问 934

E.2 ANSI/ISO标准C++和标准C++中头 941

附录F 头文件 943

F.1 头文件cassert(assert.h) 943

F.2 头文件cctype(ctype.h) 943

F.3 头文件cfloat(float.h) 944

F.4 头文件climits(limits.h) 946

F.5 头文件cmath(math.h) 947

F.6 头文件cstddef(stddef.h) 948

F.7 头文件cstring(string.h) 948

F.8 头文件string 948

附录G 系统上的内存大小和随机数生成器 951

附录H 标准模板库(STL) 953

H.1 STL的组成部分 953

H.2 容器类型 953

H.2.1 顺序容器 953

H.2.2 顺序容器:向量 954

H.2.3 所有容器中常见的成员函数 960

H.2.4 顺序容器中常见的成员函数 961

H.2.5 复制算法 961

H.2.6 顺序容器:双端队列 965

H.2.7 顺序容器:列表 967

H.3 迭代器 971

H.3.1 IOStream迭代器 971

H.3.2 容器适配器 972

H.4 算法 975

H.4.1 STL算法分类 975

H.4.2 STL算法 976

H.4.3 函数fill和fill_n 976

H.4.4 函数find和find_if 978

H.4.5 函数remove和replace 979

H.4.6 函数search、sort和binary_search 980

附录I 部分练习题的答案 983

返回顶部