第1章 C语言概述 1
1.1 C语言简史 1
1.2 C语言的特点 2
1.3 C程序的基本结构 3
1.4 什么是数据结构 6
1.5 Turbo C 2.0简介 7
第2章 数据类型 11
2.1 常量与变量的说明 11
2.1.1 常量 11
2.1.2 变量 12
2.1.3 标志符命名 12
2.2 C语言的数据类型 13
2.2.1 整型数据 13
2.2.2 实型数据 15
2.2.3 字符型数据 17
2.3 运算符 21
2.3.1 算术运算符和算术表达式 22
2.3.2 关系运算符和关系表达式 23
2.3.3 逻辑运算符和逻辑表达式 24
2.3.4 赋值运算符和赋值表达式 25
2.3.5 自增运算符和自减表达式 26
2.3.6 逗号运算符和逗号表达式 27
2.3.7 条件运算符和条件表达式 28
2.3.8 表达式运算顺序和数据类型转换 29
2.4 数据的输入和输出 30
2.4.1 printf函数 30
2.4.2 字符输出函数putchar函数 35
2.4.3 scanf函数 36
2.4.4 getchar函数 39
第3章 C语言程序设计 41
3.1 结构化程序设计 41
3.2 顺序程序 45
3.2.1 C程序的语句 45
3.2.2 顺序程序举例 46
3.3 选择程序 48
3.3.1 if语句 48
3.3.2 switch语句 54
3.3.3 选择程序举例 56
3.4 循环结构 58
3.4.1 for语句 58
3.4.2 while语句 61
3.4.3 do-while语句 62
3.4.4 循环的嵌套 64
3.4.5 break和continue语句 65
3.4.6 goto语句 66
3.4.7 程序举例 67
第4章 数组 70
4.1 一维数组的定义与使用 70
4.1.1 一维数组元素的定义 70
4.1.2 一维数组元索的表示方法 72
4.1.3 一维数组的赋值 73
4.1.4 一维数组程序举例 74
4.2 二维数组的定义与使用 77
4.2.1 二维数组的定义 77
4.2.2 二维数组的引用 79
4.2.3 二维数组的初始化 79
4.2.4 二维数组程序举例 80
4.3 字符数组 82
4.3.1 字符数组的定义 82
4.3.2 字符数组的初始化 83
4.3.3 字符数组的引用 83
4.3.4 字符串和字符串结束标志 84
4.3.5 字符数组的输入输出 84
4.3.6 字符数组程序举例 85
4.3.7 字符串的操作 86
4.4 线性表的顺序存储 89
4.4.1 线性表的定义 89
4.4.2 线性表的顺序存储 90
4.5 矩阵的压缩存储 94
4.5.1 特殊矩阵 94
4.5.2 稀疏矩阵 97
第5章 函数 99
5.1 概述 99
5.2 函数的形式 100
5.3 函数的参数和返回值 102
5.3.1 形式参数与实际参数 102
5.3.2 函数的返回值 102
5.4 函数的调用 102
5.4.1 函数调用的一般方法 102
5.4.2 数组作为函数参数 103
5.5 函数的嵌套调用和递归调用 105
5.5.1 函数的嵌套调用 105
5.5.2 函数的递归调用 106
5.6 变量的作用域 108
5.6.1 局部变量 109
5.6.2 全局变量 110
5.7 变量的存储类别 112
5.7.1 动态存储方式 112
5.7.2 静态存储方式 113
5.8 内部函数和外部函数 115
5.8.1 内部函数 115
5.8.2 外部函数 116
5.9 函数应用举例 116
第6章 指针 119
6.1 变量的地址和指针变量 119
6.1.1 地址(指针)、地址变量(指针变量) 119
6.1.2 指针变量的定义 122
6.1.3 指针变量的赋值 122
6.1.4 指针变量的引用 123
6.1.5 指针变量作为函数的参数 124
6.2 数组的指针和指向数组的指针变量 128
6.2.1 指向数组的指针变量 128
6.2.2 通过指针引用数组元索 129
6.2.3 数组名作为函数参数 131
6.2.4 指向多维数组的指针和指针变量 133
6.3 字符串的指针和指向字符串的指针变量 136
6.3.1 字符串的表示形式 136
6.3.2 字符串指针作为函数参数 138
6.4 指向函数的指针变量 138
6.4.1 函数的指针使用函数指针调用函数 138
6.4.2 用指向函数的指针作为函数的参数 139
6.4.3 返回指针值的函数 141
6.5 指针数组与指向指针的指针 143
6.5.1 指针数组 143
6.5.2 指针的指针 145
6.5.3 指针数组的应用 146
6.6 指针运算举例 147
第7章 结构体与共用体 151
7.1 结构体类型的定义 151
7.2 结构体类型变量 152
7.2.1 结构体类型变量的定义 152
7.2.2 结构体变量的引用 154
7.2.3 结构体变量的初始化 155
7.3 结构体数组 155
7.4 指向结构体类型数据的指针 156
7.4.1 指向结构体变量的指针 156
7.4.2 指向结构体数组的指针 158
7.4.3 结构体指针变量作函数参数 160
7.5 共用体 161
7.5.1 共用体的定义 161
7.5.2 共用体变量的说明 162
7.5.3 共用体变量的引用 163
7.6 枚举类型 165
7.6.1 枚举类型的定义 165
7.6.2 枚举类型变量的说明 165
7.6.3 枚举类型变量的赋值和使用 166
7.7 编译预处理 167
7.7.1 宏定义 167
7.7.2 文件包含 174
7.7.3 条件编译 176
7.8 位运算 179
7.8.1 位运算符 179
7.8.2 位域 182
7.8.3 类型定义符typedef 184
第8章 链表 186
8.1 链表的概念 186
8.2 链表的操作 187
8.2.1 对链表的基本操作 187
8.2.2 C语言对链表节点的结构描述 187
8.2.3 创建一个新链表 188
8.2.4 对链表的插入操作 191
8.2.5 链表的删除 194
8.2.6 其他链表的介绍 195
8.3 栈 196
8.3.1 栈 196
8.3.2 栈的顺序存储结构 197
8.4 队列 200
8.4.1 队列的定义及基本操作 200
8.4.2 队列的顺序存储结构 201
第9章 树和二叉树 203
9.1 树的定义和基本术语 203
9.1.1 树的定义 203
9.1.2 树的基本术语 204
9.1.3 树的表示 205
9.2 二叉树 206
9.2.1 二叉树的定义 206
9.2.2 二叉树的性质 208
9.2.3 二叉树的存储 209
9.3 遍历二叉树和线索二叉树 212
9.3.1 遍历二叉树 212
9.3.2 线索二叉树 214
9.4 树和森林 216
9.4.1 树的存储结构 216
9.4.2 树、森林与二叉树的转换 219
9.4.3 树和森林的遍历 222
9.5 哈夫曼树 223
9.5.1 基本术语 223
9.5.2 哈夫曼树的构造 225
9.5.3 哈夫曼编码 225
第10章 图 228
10.1 图的定义和术语 228
10.2 图的存储 231
10.2.1 邻接矩阵 231
10.2.2 邻接表 233
10.3 图的遍历 236
10.3.1 深度优先搜索 236
10.3.2 广度优先搜索 238
第11章 文件 241
11.1 文件概述 241
11.2 文件的打开与关闭 242
11.3 文件的读写 245
11.3.1 常用的文件读写函数 245
11.3.2 字符读写函数 245
11.3.3 字符串读写函数 248
11.4 文件的其他常用函数 249
11.4.1 格式化读写函数 249
11.4.2 数据块读写函数 249
第12章 常用算法及实用程序 252
12.1 常用算法 252
12.1.1 迭代法 252
12.1.2 穷举法 253
12.1.3 递推法 254
12.2 图形应用技巧 255
12.2.1 简单介绍一下常用画图函数 255
12.2.2 屏幕图像的存取技巧 262
12.2.3 用随机函数实现动画的技巧 265
12.2.4 用putimage函数实现动画的技巧 267
12.3 音响技巧 269
12.3.1 音乐程序设计 269
12.3.2 自动识谱音乐程序 273
12.3.3 实现后台演奏音乐的技巧 277
附录1 ASCⅡ码表 279
附录2 库函数 281
附录3 C语言中的关键字 287
附录4 运算符和结合性 288
附录5 Turbo C(V2.0)编译错误信息 289
附录6 2005年二级C语言考试大纲 296