第1章 计算机、Internet 和万维网导论 1
1.1 引言 2
1.2 计算机:硬件和软件 3
1.3 计算机组成 3
1.4 个人计算、分布式计算和客户/服务器计算 4
1.5 因特网和万维网 4
1.6 机器语言、汇编语言和高级语言 4
1.7 C语言的发展历史 5
1.8 C语言标准库 6
1.9 C++语言 7
1.10 Java语言 7
1.11 著名的高级语言Fortran,COBOL,Pascal 和Ada 7
1.12 BASIC,Visual Basic,Visual C++ ,Visual C#语言和.NET编程平台 8
1.13 软件发展的重要趋势:对象技术 8
1.14 典型的C语言程序开发环境 9
1.15 硬件的发展趋势 11
1.16 关于C语言和本书的一些注解 11
1.17 有价值的Web站点 12
第2章 C语言程序设计入门 19
2.1 引言 20
2.2 一个简单的C程序:打印一行文字 20
2.3 另一个简单的C程序:两个整数求和 23
2.4 存储单元的基本概念 26
2.5 C语言中的算术运算 27
2.6 做出判断:相等和关系运算符 30
第3章 结构化的C程序设计 43
3.1 引言 44
3.2 算法 44
3.3 伪码 44
3.4 控制结构 44
3.5 if选择语句 46
3.6 if else选择语句 47
3.7 while循环语句 49
3.8 算法设计案例1:计数控制的循环 50
3.9 自顶向下、逐步求精的算法设计案例2:标记控制的循环 52
3.10 自顶向下、逐步求精的算法设计案例3:嵌套的控制结构 57
3.11 赋值运算符 60
3.12 增1和减1运算符 60
第4章 C程序控制 77
4.1 引言 78
4.2 循环的基本原理 78
4.3 计数控制的循环 78
4.4 for循环语句 79
4.5 for循环语句:注意事项 81
4.6 应用for循环语句的例子 82
4.7 switch多重选择语句 85
4.8 do while循环语句 89
4.9 break和continue 语句 90
4.10 逻辑运算符 91
4.11 区分相等运算符(==)和赋值运算符(=) 93
4.12 结构化程序设计总结 94
第5章 C函数 110
5.1 引言 111
5.2 C语言中的程序模块 111
5.3 数学库函数 112
5.4 函数 113
5.5 函数定义 113
5.6 函数原型 116
5.7 函数调用堆栈及活动记录 118
5.8 头文件 118
5.9 按值或按引用调用函数 119
5.10 随机数的生成 119
5.11程序案例:运气游戏 123
5.12 存储类型 126
5.13 标识符作用域的规定 128
5.14 递归 130
5.15 使用递归的例子:Fibonacci数列 133
5.16 递归与迭代 135
第6章 C数组 154
6.1 引言 155
6.2 数组 155
6.3 数组的定义 156
6.4 数组的应用举例 156
6.5 向函数传递数组 166
6.6 数组元素的排序 169
6.7 案例分析:采用数组来计算平均值、中值和众数 171
6.8 数组元素的查找 174
6.9 多下标数组 178
第7章 C指针 198
7.1 引言 199
7.2 指针变量的定义和初始化 199
7.3 指针运算符 200
7.4 按引用向函数传递实参 201
7.5 对指针使用const 限定符 204
7.6 使用按引用调用方法实现冒泡法排序 209
7.7 sizeof 运算符 211
7.8 指针表达式和指针运算 213
7.9 指针和数组的关系 215
7.10 指针数组 218
7.11 案例学习:扑克牌洗牌和发牌模拟 218
7.12 函数指针 222
第8章 C 字符和字符串 242
8.1 引言 243
8.2 字符串和字符基础 243
8.3 字符处理函数库 244
8.4 字符串转换函数 248
8.5 标准输入输出库函数 251
8.6 字符串处理函数库中的字符串处理函数 254
8.7 字符串处理函数库中的比较函数 256
8.8 字符串处理函数库中的查找函数 258
8.9 字符串处理函数库中的内存函数 262
8.10 字符串处理函数库中的其他函数 265
第9章 格式化输入/ 输出 279
9.1 引言 280
9.2 流 280
9.3 用printf 函数实现格式化输出 280
9.4 打印整数 281
9.5 打印浮点数 282
9.6 打印字符串或字符 283
9.7 其他的转换说明符 284
9.8 带域宽和精度的打印 285
9.9 在printf 函数的格式控制字符串中使用标记 286
9.10 打印文本和转义序列 288
9.11 用scanf 函数读取格式化的输入 289
第10章 结构体、共用体、位操作和枚举类型 300
10.1 引言 301
10.2 结构体的定义 301
10.3 结构体的初始化 303
10.4 对结构体成员的访问 303
10.5 在函数中使用结构体 304
10.6 typedef 的使用 305
10.7 实例:高性能的洗牌与发牌模拟 305
10.8 共用体 307
10.9 位运算符 309
10.10 位域 315
10.11 枚举常量 318
第11章 文件处理 328
11.1 引言 329
11.2 数据的层次结构 329
11.3 文件与流 330
11.4 顺序存取文件的创建 330
11.5 从顺序存取文件中读取数据 334
11.6 随机存取文件 338
11.7 随机存取文件的创建 338
11.8 随机地向一个随机存取文件中写入数据 340
11.9 从一个随机存取文件中读取数据 342
11.10 案例学习:事务处理程序 343
第12章 数据结构 356
12.1 引言 357
12.2 自引用结构体 357
12.3 动态内存分配 358
12.4 链表 359
12.5 堆栈 365
12.6 队列 369
12.7 树 373
第13章 C 预处理 388
13.1 引言 389
13.2 #include 预处理命令 389
13.3 #define 预处理命令:符号常量 389
13.4 #define 预处理命令:宏 389
13.5 条件编译 391
13.6 #error 和#pragma 预处理命令 392
13.7 #和##运算符 392
13.8 行号 392
13.9 预定义的符号常量 393
13.10 断言 393
第14章 C语言的其他专题 397
14.1 引言 398
14.2 I/ O 的重定向 398
14.3 可变长的实参列表 398
14.4 使用命令行实参 400
14.5 由多个源文件组成的程序的编译问题 401
14.6 使用exit 和atexit 终止程序 402
14.7 volatile 类型限定符 403
14.8 整型和浮点型常量的后缀 403
14.9 关于文件的深入讨论 404
14.10 信号处理 405
14.11 动态内存分配:函数calloc 和realloc 407
14.12 用goto 实现无条件转移 407
第15章 C++ :介绍对象技术 413
15.1 简介 414
15.2 C++ 414
15.3 简单程序:两个整数相加 414
15.4 C++ 标准库 416
15.5 头文件 416
15.6 内联函数 417
15.7 引用和引用形参 419
15.8 空形参列表 423
15.9 默认实参 423
15.10 一元作用域运算符 424
15.11 函数重载 425
15.12 函数模板 427
15.13 对象技术与UML 简介 429
15.14 本章小结 431
第16章 类与对象简介 437
16.1 简介 438
16.2 类、对象、成员函数以及数据成员 438
16.3 定义一个具有成员函数的类 439
16.4 定义一个有参成员函数 441
16.5 数据成员、set 函数与get 函数 443
16.6 用构造函数初始化对象 447
16.7 将类放在单独的文件中以增强重用性 450
16.8 将接口与实现分离 452
16.9 用set 函数验证数据 456
16.10 本章小结 460
第17章 类:深入剖析(1) 466
17.1 简介 467
17.2 Time 类的案例学习 467
17.3 类域和访问类的成员 472
17.4 将接口与实现分离 473
17.5 访问函数和工具函数 473
17.6 Time 类的案例学习:具有默认实参的构造函数 475
17.7 析构函数 479
17.8 构造函数与析构函数的调用时间 479
17.9 Time 类的案例学习:隐蔽陷阱——-返回private 数据成员的引用 482
17.10 默认按成员赋值 483
17.11 本章小结 485
第18章 类:深入剖析(2) 490
18.1 简介 491
18.2 const 对象和const 成员函数 491
18.3 组合:对象作为类的成员 497
18.4 友元函数和友元类 501
18.5 使用this 指针 503
18.6 static 类成员 507
18.7 数据抽象和信息隐藏 510
18.8 本章小结 511
第19章 运算符重载 517
19.1 简介 518
19.2 运算符重载基础 518
19.3 运算符重载的限制 519
19.4 作为类的成员和作为全局函数的运算符函数的比较 520
19.5 重载流插入和流读取运算符 521
19.6 重载一元运算符 523
19.7 重载二元运算符 524
19.8 动态内存管理 524
19.9 案例学习:Array 类 525
19.10 类型转换 534
19.11 创建String 类 534
19.12 重载++ 和—— 535
19.13 案例学习:Date 类 536
19.14 标准库类string 540
19.15 explicit 构造函数 542
19.16 代理类 544
19.17 本章小结 546
第20章 面向对象编程:继承 556
20.1 简介 557
20.2 基类和派生类 557
20.3 protected 成员 559
20.4 基类和派生类的关系 559
20.5 派生类的构造函数与析构函数 580
20.6 public、protected 和private 继承 586
20.7 关于继承的软件工程 586
20.8 本章小结 587
第21章 面向对象编程:多态 591
21.1 简介 592
21.2 多态的实例 592
21.3 继承层次结构中对象间的关系 593
21.4 类型域和switch 语句 605
21.5 抽象类和纯虚函数 605
21.6 案例学习:利用多态的工资系统 607
21.7 (选讲)多态、虚函数以及动态联编 618
21.8 案例学习:利用多态的和运行时类型信息的工资系统,通过向下类型转换、
dynamic_cast、typeid 以及type_info 使用运行时类型信息 621
21.9 虚析构函数 624
21.10 本章小结 624
第22章 模板 629
22.1 简介 630
22.2 函数模板 630
22.3 重载函数模板 632
22.4 类模板 633
22.5 类模板的非类型形参和默认类型 637
22.6 模板与继承 638
22.7 模板与友元 638
22.8 模板与static 成员 639
22.9 本章小结 639
第23章 输入/ 输出流 643
23.1 简介 644
23.2 流 644
23.3 输出流 646
23.4 输入流 647
23.5 用read、write 和gcount 进行无格式I/ O 650
23.6 流操纵符简介 651
23.7 流格式状态和流操纵符 654
23.8 流错误状态 660
23.9 将输出流绑定到输入流上 662
23.10 本章小结 662
第24章 异常处理 672
24.1 简介 673
24.2 异常处理概述 673
24.3 实例:处理除数为0 的异常 674
24.4 何时使用异常处理 677
24.5 重新抛出异常 678
24.6 异常规范 679
24.7 处理意外异常 680
24.8 栈展开 680
24.9 构造函数、析构函数与异常处理 681
24.10 异常与继承 682
24.11 处理new 故障 682
24.12 auto_ptr 类与动态内存分配 684
24.13 标准库的异常层次结构 686
24.14 其他错误处理技术 687
24.15 本章小结 687
附录A 运算符优先级表 693
附录B ASCII 字符集 696
附录C 数制系统 697
附录D 游戏编程:解决数独问题 707
Web 网站中提供的附录 713
索引 714
· · · · · · (
收起)