第一部分C语言 1
第一章 C语言概述 1
1.1 C语言的起源 1
1.2 C是一种中级程序设计语言 1
目录 1
1.3 C是一种结构化程序语言 2
1.4 C是面向程序员的语言 3
1.5 编译器与解释器 4
1.6 C语言的形式 5
1.7 库和链接 6
1.9 编译C程序 7
1.10 C语言存贮映象 7
1.8 分别编译 7
1.11 术语 8
第二章C语言表达式 8
2.1 五种基本数据类型 8
2.2 修饰其本类型 9
2.3 标识符名字 10
2.4 变量 10
2.5 访问类型修饰符 15
2.6 存贮类别说明符 16
2.7 变量初始化 20
2.8 常量 21
2.9 运算符 22
2.10表达式 33
第三章程序控制语句 35
3.1 真值和假值 36
3.2 选择语句 36
3.3 迭代语句 45
3.4 转移语句 52
3.5 表达式语句 55
3.6 块语句 56
第四章数组和字符串 56
4.1 一维数组 56
4.2 产生指向数组的指针 57
4.3 一维数组传入函数 57
4.4 字符串 58
4.5 二维数组 60
4.6 多维数组 63
4.7 下标指针 64
4.8 数组初始化 65
4.9 实例:棋盘游戏 67
第五章指针 69
5.1 指针是什么 69
5.2 指针变量 70
5.3 指针操作符 70
5.4 指针表达式 71
5.5 指针和数组 74
5.6 多次间接 75
5.7 指针初始化 76
5.8 指向函数的指针 77
5.9 C语言动态分配函数 79
5.10指针带来的问题 82
6.1 函数的一般形式 84
第六章函数 84
6.2 函数的作用域规则 85
6.3 函数自变量 85
6.4 argc和argv——main()的自变量 90
6.5 返回语句 92
6.6 返回非整型值的函数 94
6.7 函数原型 95
6.8 返回指针 96
6.9 类型void的函数 97
6.10 main()返回什么 98
6.11递归 98
6.13经典与现代函数的参数说明 99
6.12说明变量长度和类型参数表 99
6.14实现问题 100
6.15库和文件 101
第七章结构、联合、枚举和用户定义类型 102
7.1 结构 102
7.2 结构数组 104
7.3 把结构传给函数 110
7.4 结构指针 112
7.5 结构内部的数组和结构 114
7.6 位域 114
7.7 联合 116
7.8 枚举 118
7.9 用sizeof保证可移植性 119
7.10 typedef语句 120
第八章控制台I/O 121
8.1 读写字符 121
8.2 读和写字符串 123
8.3 格式化的控制台I/O 124
8.4 scanf() 129
第九章文件I/O 133
9.1 ANSI I/O与UNIX I/O 133
9.2 流与文件 134
9.3 流 134
9.4 文件 134
9.5 文件系统基础 135
9.6 fread()和fwrite() 143
9.7freek()和随机访问I/O 148
9.8 fprintf()和fscanf() 149
9.9 标准流 150
9.10类UNIX文件系统 151
第十章C语言预处理器和注释 156
10.1 C语言预处理器 156
10.2#define 156
10.3#error 158
10.4#include 158
10.5条件编译指令 158
10.6#undef 161
10.7#line 161
10.9 #和##预处理器运算符 162
10.10预定义宏名字 162
10.8#pragma 162
10.11注释 163
第二部分C语言标准库 164
第十一章链接、库和头文件 164
11.1连接器 164
11.2 C语言标准库 167
11.3头文件 167
11.4重新定义库函数 169
第十二章 I/O函数 169
第十三章字符串函数和字符函数 205
第十四章数学函数 222
第十五章时间、日期和其它有关系统函数 231
第十六章动态分配 262
第十七章屏幕和图形函数 274
第十八章其它函数 294
第三部分算法及其应用 311
第十九章排序和搜索 311
19.1排序 311
19.2选择一个排序方法 320
19.3其它数据结构的排序 320
19.4随机访问磁盘文件的排序 322
19.5搜索 324
第二十章队列、栈、链表和树 326
20.1队列 326
20.2循环队列 330
20.3栈 332
20.4链表 336
20.5单链表 336
20.6双链表 340
20.7通讯录例子 343
20.8二叉树 347
第二十一章稀疏数组 353
12.1链表稀疏数组 354
21.2二叉树稀疏数组 356
21.3指针数组的稀疏数组 358
21.4散列 360
21.5选择一种方法 364
22.1表达式 365
第二十二章表达式的分析与求值 365
22.2分解一个表达式 366
22.3表达式分析 368
22.4一个简单的表达式分析器 369
22.5分析器加上变量处理 373
22.6递归下降分析器中的语法检查 379
第二十三章人工智能问题求解 380
23.1表示和术语 380
23.2组合爆炸 381
23.3搜索技术 383
23.4评价一个搜索方法 383
23.5图形表示 384
23.6深度优先搜索 384
23.7宽度优先搜索 392
23.9登山搜索 394
23.8加启发性信息 394
23.10最小代价搜索 399
23.11选择搜索技术 400
23.12寻找多个解 400
23.13寻找最优解 406
23.14回到寻找钥匙的问题 410
第二十四章利用系统资源 412
24.1 8086类处理器 413
24.2 8086中断和DOS 413
24.3访问BIOS中的系统资源 415
24.4使用DOS访问系统功能 423
25.1方式和调色板 427
第二十五章图形 427
24.5 利用系统资源的最后设想 427
25.2写点 428
25.3画线 431
25.4画矩形和填充矩形 434
25.5综合应用 436
第四部分C语言软件开发 444
第二十六章汇编语言子程序接口 444
26.1汇编语言接口 444
26.2 C编译器的调用约定 445
26.3 Microsoft C语言的调用约定 445
26.4建立汇编语言函数 446
26.5建立汇编语言框架 453
26.7何时用汇编编程 455
26.6使用asm 455
第二十七章G语言软件工程 456
27.1自顶向下设计 456
27.2保护函数法 458
27.3函数原型法 459
27.4 lint和make 460
第二十八章效率、移植和调试 463
28.1效率 463
28.2程序移植 468
28.3调试 470
28.4程序维护的艺术 476
第二十九章 C++ 478
29.1数据抽象 478
第五部分新的进展 478
29.2目标 479
29.3注释 480
29.4类别 480
29.5函数复用 486
29.6操作符复用 487
29.7 C++的其它特性 490
附录A K R C与ANSIC的差异 491
A.1 关键字删除 491
A.2 关键字扩充 491
A.3 传递结构 492
A.4 函数原型 492
A.5 现代与经典函数说明 493
A.6 标准函数库 493
A.7 附加预处理器命令 493