第1章 计算机、Internet和万维网导论 1
1.1 引言 2
1.2 什么是计算机 3
1.3 计算机的基本组成 3
1.4 早期的操作系统 4
1.5 个人计算、分布式计算和客户/服务器计算 4
1.6 机器语言、汇编语言和高级语言 5
1.7 著名的高级语言FORTRAN,COBOL,Pascal和Ada 6
1.8 C语言的发展历史 7
1.9 C语言标准库 8
1.10 C++语言 8
1.11 Java 9
1.12 BASIC语言,Visual Basic语言,Visual C++语言,Visual C#语言和.NET编程平台 9
1.13 软件发展的重要趋势:对象技术 10
1.14 典型的C语言程序开发环境 11
1.15 硬件的发展趋势 13
1.16 Internet的发展历史 13
1.17 万维网(WWW)的发展历史 14
1.18 关于C语言和本书的一些注解 14
1.19 有价值的Web站点 15
第2章 C语言程序设计入门 26
2.1 引言 26
2.2 一个简单的C程序:输出一行文字 27
2.3 另一个简单的C程序:两个整数求和 30
2.4 存储单元的基本概念 34
2.5 C语言中的算术运算 34
2.6 做出判断:相等和关系运算符 37
第3章 结构化的C程序设计 50
3.1 引言 50
3.2 算法 51
3.3 伪码 51
3.4 控制结构 52
3.5 if选择语句 53
3.6 if...else选择语句 54
3.7 while循环语句 57
3.8 算法设计案例1:计数控制的循环 58
3.9 算法设计案例2:自顶向下、逐步求精的标记控制循环 60
3.10 算法设计案例3:自顶向下、逐步求精的嵌套控制结构 65
3.11 赋值运算符 69
3.12 增1和减1运算符 69
第4章 C程序控制 86
4.1 引言 86
4.2 循环的基本原理 87
4.3 计数控制的循环 87
4.4 for循环语句 89
4.5 for循环语句:注意事项 91
4.6 应用for循环语句的例子 92
4.7 switch多重选择语句 94
4.8 do...while循环语句 99
4.9 break和continue语句 100
4.10 逻辑运算符 102
4.11 区分相等运算符(==)和陚值运算符(=) 104
4.12 结构化程序设计总结 105
第5章 C函数 120
5.1 引言 121
5.2 C语言中的程序模块 121
5.3 数学库函数 122
5.4 函数 123
5.5 函数定义 123
5.6 函数原型 127
5.7 函数调用栈及活动记录 129
5.8 头文件 129
5.9 主调函数:按值调用与按引用调用 130
5.10 随机数的生成 130
5.11 程序案例:运气游戏 134
5.12 存储类型 137
5.13 标识符作用域的规定 139
5.14 递归 142
5.15 使用递归的例子:Fibonacci数列 144
5.16 递归与迭代 147
第6章 C数组 165
6.1 引言 165
6.2 数组 166
6.3 数组的定义 167
6.4 数组的应用举例 167
6.5 将数组传递给函数的方法 178
6.6 数组元素的排序 182
6.7 案例分析:釆用数组来计算平均值、中值和众数 184
6.8 数组元素的查找 187
6.9 多维数组 191
第7章 C指针 213
7.1 引言 213
7.2 指针变量的定义和初始化 214
7.3 指针运算符 214
7.4 使用按引用调用方法向函数传递实参 216
7.5 对指针使用const限定符 219
7.6 使用按引用调用方法实现冒泡法排序 224
7.7 sizeof运算符 227
7.8 指针表达式和指针运算 228
7.9 指针和数组之间的关系 230
7.10 指针数组 234
7.11 案例学习:扑克牌洗牌和发牌模拟 234
7.12 函数指针 238
第8章 C字符和字符串 258
8.1 引言 258
8.2 字符串和字符基础 259
8.3 字符处理函数库 260
8.4 字符串转换函数 264
8.5 标准输入输出库函数 268
8.6 字符串处理函数库中的字符串处理函数 271
8.7 字符串处理函数库中的比较函数 273
8.8 字符串处理函数库中的查找函数 274
8.9 字符串处理函数库中的内存函数 279
8.10 字符串处理函数库中的其他函数 282
第9章 格式化输入输出 294
9.1 引言 294
9.2 流 295
9.3 用printf函数实现格式化输出 295
9.4 打印整数 295
9.5 打印浮点数 296
9.6 打印字符串或字符 298
9.7 其他的转换说明符 299
9.8 带域宽和精度的打印 300
9.9 在printf函数的格式控制字符串中使用标记 301
9.10 打印文本和转义序列 304
9.11 用scanf函数读取格式化的输入 304
第10章 结构体、共用体、位操作和枚举类型 316
10.1 引言 316
10.2 结构体的定义 317
10.3 结构体的初始化 319
10.4 对结构体成员的访问 319
10.5 在函数中使用结构体 321
10.6 typedef的使用 321
10.7 实例:高性能的洗牌与发牌模拟程序 322
10.8 共用体 324
10.9 位运算符 326
10.10 位域 332
10.11 枚举常贵 335
第11章 文件处理 345
11.1 引言 345
11.2 数据的层次结构 346
11.3 文件与流 347
11.4 顺序存取文件的创建 348
11.5 从顺序存取文件中读取数据 352
11.6 随机存取文件 355
11.7 随机存取文件的创建 356
11.8 向一个随机存取文件中随机地写入数据 357
11.9 从一个随机存取文件中读取数据 360
11.10 案例学习:事务处理程序 361
第12章 数据结构 374
12.1 引言 374
12.2 自引用结构体 375
12.3 动态内存分配 376
12.4 链表 377
12.5 堆栈 384
12.6 队列 388
12.7 树 392
第13章 C预处理 418
13.1 引言 418
13.2 #include预处理命令 419
13.3 #define预处理命令:符号常量 419
13.4 #define预处理命令:宏 419
13.5 条件编译 421
13.6 #error和#pragma预处理命令 422
13.7 #和##运算符 422
13.8 行号 423
13.9 预定义的符号常景 423
13.10 断言 423
第14章 C语言的其他专题 428
14.1 引言 428
14.2 Linux/UNIX和Windows系统中输入/输出的重定向 429
14.3 可变长的实参列表 429
14.4 使用命令行实参 431
14.5 由多个源文件组成的程序的编译问题 432
14.6 使用exit和atexit终止程序 433
14.7 volatile类型限定符 434
14.8 整型和浮点型常量的后缀 434
14.9 关于文件的深入讨论 435
14.10 信号处理 436
14.11 动态内存分配:calloc函数和realloc函数 438
14.12 用goto实现无条件转移 439
第15章 基于Allegro C函数库的游戏编程 444
15.1 引言 445
15.2 安装Allegro库 445
15.3 一个简单的Allegro库程序 445
15.4 简单的图形:位图的导入和块传送 446
15.5 双缓冲动画显示技术 450
15.6 导入和播放声音 455
15.7 键盘输入 457
15.8 字体和文本显示 461
15.9 实现Pong游戏 465
15.10 Allegro库的定时器 470
15.11 Allegro库的Grabber工具和数据文件 473
15.12 Allegro库的其他功能 480
15.13 Allegro库的网络资源 480
第16章 排序:更深入的透视 487
16.1 引言 487
16.2 大O记号 488
16.3 选择排序 488
16.4 插入排序 491
16.5 归并排序 493
第17章 C99简介 502
17.1 引言 503
17.2 对C99的支持 503
17.3 新的C99头文件 504
17.4 //单行注释符 504
17.5 声明语句和可执行代码的混合使用 504
17.6 在for语句头声明一个变量 505
17.7 指派初始化和复合文本 506
17.8 布尔类型 508
17.9 函数声明中的隐式int类型 509
17.10 复数 510
17.11 可变长数组 511
17.12 C99其他的特征 512
17.13 因特网和万维网上的资源 515
第18章 C++,一个更好的C;介绍对象技术 519
18.1 引言 520
18.2 C++ 520
18.3 简单程序:两个整数相加 520
18.4 C++标准库 522
18.5 头文件 522
18.6 内联函数 523
18.7 引用和引用形参 525
18.8 空形参列表 528
18.9 默认实参 529
18.10 一元作用域运算符 530
18.11 函数重载 531
18.12 函数模板 533
18.13 对象技术与UML简介 535
18.14 本章小结 539
第19章 类与对象简介 544
19.1 引言 544
19.2 类、对象、成员函数以及数据成员 545
19.3 本章实例概述 545
19.4 定义一个具有成员函数的类 546
19.5 定义一个有参成员函数 548
19.6 数据成员、set函数与get函数 551
19.7 用构造函数初始化对象 556
19.8 将类放在单独的文件中以增强重用性 558
19.9 将接口与实现分离 561
19.10 用set函数验证数据 565
19.11 本章小结 569
第20章 类:深入剖析(第1部分) 574
20.1 引言 574
20.2 Time类的案例学习 575
20.3 类域和访问类的成员 580
20.4 将接口与实现分离 581
20.5 访问函数和工具函数 581
20.6 Time类的案例学习:具有默认实参的构造函数 584
20.7 析构函数 587
20.8 构造函数与析构函数的调用时间 588
20.9 Time类的案例学习:隐蔽陷阱——返回private数据成员的引用 590
20.10 默认按成员赋值 592
20.11 软件重用性 594
20.12 本章小结 594
第21章 类:深入剖析(第2部分) 599
21.1 引言 600
21.2 const对象和const成员函数 600
21.3 组合:对象作为类的成员 607
21.4 友元函数和友元类 612
21.5 使用this指针 614
21.6 用new和delete运算符进行动态内存管理 618
21.7 static类成员 620
21.8 数据抽象和信息隐藏 624
21.9 容器类和迭代器 626
21.10 代理类 626
21.11 本章小结 628
第22章 运算符重载 633
22.1 引言 633
22.2 运算符重载基础 634
22.3 运算符重载的限制 635
22.4 作为类的成员和作为全局函数的运算符函数的比较 636
22.5 重载流插入和流读取运算符 637
22.6 重载一元运算符 640
22.7 重载二元运算符 640
22.8 案例学习:Array类 640
22.9 类型转换 649
22.10 重载++和-- 650
22.11 explicit构造函数 651
22.12 本章小结 653
第23章 面向对象编程:继承 663
23.1 引言 664
23.2 基类和派生类 664
23.3 protected成员 666
23.4 基类和派生类的关系 667
23.5 派生类的构造函数与析构函数 689
23.6 public,protected和private继承 695
23.7 关于继承的软件工程 696
23.8 本章小结 696
第24章 面向对象编程:多态 701
24.1 引言 702
24.2 多态的实例 703
24.3 继承层次结构中对象间的关系 703
24.4 类型域和switch语句 716
24.5 抽象类和纯虚函数 716
24.6 案例学习:利用多态的工资系统 718
24.7 (选修)多态、虚函数以及动态绑定 730
24.8 案例学习:利用多态的和运行时类型信息的工资系统,通过向下类型转换、dynamic_cast、typeid 以及type_info 使用运行时类型信息 733
24.9 虚析构函数 736
24.10 本章小结 736
第25章 模板 740
25.1 引言 740
25.2 函数模板 741
25.3 重载函数模板 743
25.4 类模板 744
25.5 类模板的非类型形参和默认类型 748
25.6 模板与继承 749
25.7 模板与友元 749
25.8 模板与static成员 750
25.9 本章小结 750
第26章 输入/输出流 755
26.1 引言 756
26.2 流 756
26.3 输出流 759
26.4 输入流 760
26.5 用read,write和gcount进行无格式I/O 763
26.6 流操纵符简介 764
26.7 流格式状态和流操纵符 768
26.8 流错误状态 775
26.9 将输出流绑定到输入流上 777
26.10 本章小结 777
第27章 异常处理 786
27.1 引言 787
27.2 异常处理概述 787
27.3 实例:处理除数为0的异常 788
27.4 何时使用异常处理 792
27.5 重新拋出异常 793
27.6 异常规范 794
27.7 处理未预料的异常 794
27.8 栈展开 795
27.9 构造函数、析构函数与异常处理 796
27.10 异常与继承 796
27.11 处理new故障 797
27.12 auto_ptr类与动态内存分配 800
27.13 标准库的异常层次结构 801
27.14 其他错误处理技术 802
27.15 本章小结 803
附录A 因特网和Web资源 809
附录B 运算符优先级表 822
附录C ASCII字符集 825
附录D 数制系统 826
附录E 游戏编程:求解Sudoku问题 836
索引 843
· · · · · · (
收起)