国外计算机科学经典教材 C++基础教程 从问题分析到程序设计 第2版PDF电子书下载
- 电子书积分:25 积分如何计算积分?
- 作 者:(美)D.S.MALIK著;曹蓉蓉 宋红译
- 出 版 社:北京:清华大学出版社
- 出版年份:2006
- ISBN:7302121680
- 页数:993 页
目录 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
- 《市政工程基础》杨岚编著 2009
- 《零基础学会素描》王金著 2019
- 《计算机网络与通信基础》谢雨飞,田启川编著 2019
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《生物质甘油共气化制氢基础研究》赵丽霞 2019
- 《全国高等中医药行业“十三五”创新教材 中医药学概论》翟华强 2019
- 《MBA大师.2020年MBAMPAMPAcc管理类联考专用辅导教材 数学考点精讲》(中国)董璞 2019
- 《花时间 我的第一堂花艺课 插花基础技法篇》(日)花时间编辑部编;陈洁责编;冯莹莹译 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《Photoshop CC 2018基础教程》温培利,付华编著 2019
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019