目录 2
第一部分 C语言 2
第一章 C语言概述 2
1.1 C语言的起源 2
1.2 C语言是中级语言 3
1.3 C语言是结构化语言 4
1.4 C语言是程序员的语言 6
1.5 编译程序与解释程序 8
1.6 C语言的程序结构 10
1.7 术语 16
2.1 标识符命名 17
第二章 变量、常量、运算符和表达式 17
2.2 数据类型 18
2.3 变量定义 23
2.4 局部变量 23
2.5 存储分类符 29
2.6 赋值语句 35
2.7 常量 38
2.8 运算符 40
2.9 表达式 56
第三章 程序控制语句 61
3.1 真值和假值 61
3.2 C语言的语句 61
3.4 if语句 62
3.3 条件语句 62
3.5 switch开关语句 69
3.6 循环语句 75
3.7 for循环语句 75
3.8 while条件循环语句 82
3.9 do-while结束条件循环语句 85
3.10 break中断语句 87
3.11 exit()终止退出 89
3.12 continue条件继续语句 90
3.13 goto转移语句和标号 92
第四章 函数 95
4.1 返回语句 95
4.3 函数的变元 99
4.2 函数的作用域规则 99
4.4 返回非整型值的函数 112
4.5 递归 115
4.6 函数指针 118
4.7 实现问题 121
4.8 函数库和文件 123
第五章 数组 126
5.1 一维数组 126
5.2 二维数组 131
5.3 多维数组 137
5.4 数组与指针 138
5.5 动态分配的数组 140
5.6 数组的初始化 144
5.7 实例:棋盘游戏 147
第六章 指针 152
6.1 指针即地址 152
6.2 指针变量 152
6.3 指针运算符 153
6.4 指针表达式 155
6.5 C语言的内存动态分配函数 160
6.6 指针和数组 161
6.7 指针的指针 166
6.8 指针的初始化 168
6.9 函数的指针 170
6.10 非整数指针 173
6.11 指针应用中的某些问题 174
第七章 结构、联合及用户定义的变量 177
7.1 结构 177
7.2 结构数组 180
7.3 结构向函数的传递 188
7.4 结构指针 191
7.5 结构内的数组及结构 195
7.6 位域 196
7.7 联合 199
7.8 枚举 202
7.9 用sizeof增强可移植性 205
7.10 类型定义typedef 206
8.1 控制台I/O 208
第八章 输入、输出及磁盘文件 208
8.2 格式化的控制台I/O 211
8.3 缓冲文件系统 218
8.4 非缓冲I/O——类UNIX文件例行程序 239
8.5 方式的选择 245
第九章 C语言的预处理程序与注释 246
9.1 C语言的预处理程序 246
9.2 #define 247
9.3 #error 249
9.4 #include 249
9.5 条件编译命令 250
9.7 #line 255
9.6 #undef 255
9.8 #pragma 256
9.9 预定义的宏名 256
9.10 注释 257
第二部分 C语言的标准程序库 261
第十章 链接、程序库与首标文件 261
10.1 链接程序 261
10.2 C语言的标准程序库 265
10.3 首标文件 267
10.4 库函数的重定义 269
10.5 steddf.h和limits.h 270
11.1 流 272
第十一章 I/O函数 272
11.2 文件 273
11.3 概念与现实 274
11.4 I/O函数 275
第十二章 字符串函数与字符函数 334
第十三章 数学函数 364
第十四章 时间日期及其它与系统有关的函数 381
第十五章 动态分配 399
第十六章 屏幕及图形函数 419
第十七章 其它函数 433
第十八章 排序与搜索 466
18.1 排序 466
第三部分 算法及应用 466
18.2 改进的排序算法 477
18.3 排序算法的选择 483
18.4 其它数据结构的排序 484
18.5 磁盘文件的排序 487
18.6 顺序文件的排序 490
18.7 搜索 494
第十九章 队列、栈、链表和树 497
19.1 队列 498
19.2 循环队列 503
19.3 栈 507
19.4 链表 512
19.5 二叉树 529
第二十章 稀疏数组 539
20.1 链表稀疏数组 540
20.2 用二叉树构造稀疏数组 544
20.3 指针数组的稀疏数组 547
20.4 散列法 551
20.5 各种方法的选择 555
第二十一章 表达式的分析与求值 557
21.1 表达式 557
21.2 表达式的分割 559
21.3 表达式分析 563
21.4 一个简单的表达式分析程序 564
21.5 分析程序中增加变量处理 570
21.6 递归下降分析程序的语法检查 579
第二十二章 人工智能问题求解 581
22.1 表示法与术语 581
22.2 合爆炸 583
22.3 搜索技术 585
22.4 搜索方法的评价 585
22.5 图形表示法 587
22.6 深度优先搜索 588
22.7 广度优先搜索 600
22.8 启发式搜索 603
22.9 “登山”搜索 604
22.10 最小代价搜索 610
22.11 搜索方法的选择 612
22.12 求多个解 613
22.13 寻找“最佳”解 620
22.14 有关丢钥匙问题 626
第二十三章 系统资源的使用 629
23.1 8088微处理器系列 629
23.2 8088的中断和PC-DOS 630
23.3 用ROM-BIOS访问系统资源 632
23.4 用DOS访问系统功能 646
23.5 利用系统资源的最后设想 651
第二十四章 图形 655
24.1 方式与调色板 655
24.2 写象素 657
24.3 画线 661
24.4 矩形的描绘与填充 666
24.5 综合应用 668
第四部分 C语言软件开发 679
第二十五章 汇编语言子程序接口 679
25.1 C语言编译程序的调用规则 680
25.2 生成汇编语言函数 684
25.3 #asm和#endasm的使用 694
25.4 汇编语言编程的时机 696
第二十六章 C语言软件工程 698
26.1 自顶向下法 698
26.2 抗毁函数法 701
26.3 函数原型法 703
26.4 lint和make 704
第二十七章 效率、移植及调试 712
27.1 效率 712
27.2 程序移植 721
27.3 调试 725
27.4 一般调试理论 736
27.5 程序维护艺术 738
第五部分 最新发展方向 742
第二十八章 C++ 742
28.1 数据抽象 743
28.2 目标 744
28.3 函数参数的说明 745
28.4 解释 746
28.5 类 746
28.6 函数重叠 755
28.7 操作符重叠 758
28 8 C++的其它特性 763
附录A UNIXC与ANSI标准C的比较 765
A.1 关键字的删减 765
A.2 关键字的扩充 765
A.3 结构的传递 768
A.4 函数原型 768
A.5 标准库 769
A.6 附加的预处理器命令 769