目录 1
第一部分 C语言 1
第一章 C语言概述 1
1.1 C语言的起源 1
1.2 C是一种中级程序设计语言 1
1.3 C是一种结构化程序语言 2
1.4 C是面向程序员的语言 3
1.5 编译器和解释器 4
1.6 C语言的形式 5
1.7 概念复习 8
第二章 变量,常量,操作符和表达式 9
2.1 标识符名子 9
2.2 数据类型 9
2.3 变量说明 11
2.4 存贮类别说明符 15
2.5 赋值语句 18
2.6 常量 19
2.7 操作符 20
2.8 表达式 28
3.3 条件语句 31
3.2 C语言的语句 31
3.4 if语句 31
3.1 true和false的值 31
第三章 程序控制语句 31
3.5 switch语句 34
3.6 循环语句 37
3.7 for语句 37
3.8 while语句 40
3.9 do-while语句 41
3.10 break语句 42
3.11 exit()函数 43
3.12 continue语句 44
3.13 goto语句和标号 45
4.1 return语句 47
第四章 函数 47
4.2 函数的作用域规则 49
4.3 函数自变量 49
4.4 返回非整型值的函数 55
4.5 递归 57
4.6 指向函数的指针 58
4.7 实现中的考虑 60
4.8 函数库和文件 60
第五章 数组 62
5.1 一维数组 62
5.2 二维数组 64
5.3 多维数组 67
5.4 数组和指针 68
5.5 为数组分配空间 69
5.6 数组初始化 71
5.7 实例——Tic-Tac-Toe游戏 73
第六章 指针 77
6.1 指针就是地址 77
6.2 指针变量 77
6.3 指针操作符 77
6.4 指针表达式 78
6.5 C语言的动态存贮分配函数 81
6.6 指针和数组 81
6.7 指向指针的指针 84
6.8 指针初始化 85
6.9 指向函数的指针 86
6.11 指针带来的问题 88
6.10 指针不是整数 88
第七章 结构,联合和用户定义的变量 91
7.1 结构 91
7.2 结构数组 93
7.3 把结构传给函数 98
7.4 指向结构的指针 100
7.5 结构内部的数组或结构 102
7.6 位域 103
7.7 联合 104
7.8 枚举 106
7.6 用sizeof保证可移植性 107
7.10 typedef语句 108
8.1 控制台输入输出 109
第八章 输入,输出和磁盘文件 109
8.2 格式化的控制台输入输出 110
8.3 缓冲文件系件 113
8.4 非缓冲输入输出系统 125
8.5 方案的选择 129
第九章 C的预处理器和注释 130
9.1 C语言预处理器 130
9.2 #define 130
9.3 #error 131
9.4 #include 132
9.5 条件编译指令 132
9.7 #Iine 134
9.6 #undef 134
9.8 #pragma 135
9.9 预定义的宏名字 135
9.10 注释 135
第二部分 C语言标准函数库 137
第十章 连接,库和头文件 137
10.1 连接 程序 137
10.2 标准库 函数 139
10.3 头文件 140
10.4 重新定义库函数 141
10.5 stddef.h和Limits.h 142
11.2 文件 143
第十一章 输入输出函数 143
11.1 流式文件 143
11.3 概念级和实用级 144
11.4 输入输出函数 144
第十二章 字符串和字符函数 180
第十三章 数学函数 198
第十四章 时间,日期及其它系统相关函数 209
第十五章 动态存贮分配 219
第十六章 屏幕及图形函数 230
第十七章 其它函数 239
第十八章 排序和搜索 258
18.1 排序 258
第三部分 算法及其应用 258
18.2 改进的排序方法 264
18.3 选择一个排序方法 267
18.4 对其它数据结构的排序 268
18.5 磁盘文件的排序 269
18.6 顺序文件的排序 272
18.7 搜索 274
第十九章 队列,栈,链表和树 277
19.1 队列 277
19.2 栈 283
19.3 链表 286
19.4 二叉树 298
20.1 链表稀疏数组 304
第二十章 稀疏数组… 304
20.2 二叉树稀疏数组 306
20.3 用指针数组实现稀疏数组 308
20.4 散列 310
20.5 选择一种方法 314
第二十一章 表达式的分析和求值 315
21.1 表达式 315
21.2 分解一个表达式 316
21.3 表达式分析 318
21.4 一个简单的表达式分析器 319
21.5 给分析器加上变量处理能力 324
21.6 递归下降分析器中的语法检查 330
22.1 表示和术语 331
第二十二章 人工智能问题求解 331
22.2 组合爆炸 332
22.3 搜索技术 333
22.4 评价一个搜索方法 333
22.5 图形表示 334
22.6 深度优先搜索 335
22.7 宽度优先搜索 342
22.8 加入启发性信息 344
22.9 爬山法搜索 345
22.10 最小代价搜索 349
22.11 选择搜索技术 350
22.12 寻找多个解 351
22.13 寻找最优解 355
22.14 回到寻找钥匙的问题 359
第二十三章 利用系统资源 363
23.1 8088类处理机 363
23.2 8088中断和PC-DOS 364
23.3 通过BIOS访问系统资源 365
23.4 使用DOS访问系统功能 374
23.5 总结 377
第二十四章 图形 378
24.1 显示方式和调色板 378
24.2 写点 379
24.3 画线 381
24.4 画矩形和填充矩形 384
24.5 把它们组合起来 386
第四部分 用C语言开发软件 396
第二十五章 与汇编语言子程序的接口 396
25.1 C编译器的调用约定 396
25.2 建立汇编语言函数 397
25.3 使用#asm和#endasm 404
25.4 什么时候用汇编语言 405
第二十六章 C语言的软件工程 406
26.1 自顶向下的方法 406
26.2 函数的保护 408
26.3 函数原型 409
26.4 lint和make 410
第二十七章 效率,移植和调试 414
27.1 效率 414
27.2 程序移植 420
27.3 调试 422
27.4 调试理论概述 428
27.5 程序维护的艺术 430
第五部分 新的进展 432
第二十八章 C++ 432
28.1 数据抽象 432
28.2 目标 433
28.5 类别 434
28.3 说明函数的参数 434
28.4 注释 434
28.6 函数复用 440
28.7 操作符复用 441
28.8 C++的其它特性 444
附录A ANSI C与UNIXC的差异 445
A.1 删除的关键字 445
A.2 扩充的关键字 445
A.3 传送结构参数 446
A.4 函数原型 446
A.5 标准函数库 447
A.6 附加的预处理器命令 447