第一部分 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
第六章 函数 84
6.1 函数的一般形式 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.11 递归 98
6.10 main()返回什么 98
6.21 说明变量长度和类型参数表 99
6.13 经典与现代函数的参数说明 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.7 freek()和随机访问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 RC与ANSIC的差异 491
A.1 关键字删除 491
A.2 关键字扩充 491
A.3 传递结构 492
A.4 函数原型 492
A.5 现代与经典函数说明 493
A.6 标准函数库 493
A.7 附加预处理器命令 493