第1章 概述 1
1.1 C语言的发展和特点 1
1.1.1 程序设计语言 1
1.1.2 C语言简介 2
1.1.3 C语言的特点 3
1.2 数据结构概述 3
1.2.1 数据结构的基本概念和术语 3
1.2.2 关于算法分析 4
1.3 C语言程序结构及特点 5
1.3.1 简单程序实例 5
1.3.2 C语言程序的结构特点 6
1.4 C语言程序上机步骤 6
1.4.1 TurboC中运行C程序的步骤 7
1.4.2 TurboC的编辑功能键 9
本章小结 11
实验一 C语言程序的运行 11
习题一 12
第2章 数据类型与基本操作 13
2.1 C语言的数据类型 13
2.2 常量和变量 14
2.2.1 常量 14
2.2.2 变量 16
2.2.3 各种类型数据的存储和取值范围 18
2.2.4 变量赋值 19
2.3 运算符和表达式 20
2.3.1 C语言所提供的运算符 20
2.3.2 算术运算 21
2.3.3 赋值运算 22
2.3.4 复合赋值运算 23
2.3.5 逗号运算 23
2.4 不同类型数据间的转换 24
2.4.1 不同类型数据的隐式转换 24
2.4.2 不同类型数据的显式转换 25
2.5 基本输入与输出 25
2.5.1 数据输出 26
2.5.2 数据输入 29
2.5.3 数据输入、输出应用举例 33
本章小结 34
实验二 数据基本运算及基本输入、输出 34
习题二 36
第3章 C语言程序的流程控制 39
3.1 程序设计基础知识 39
3.1.1 程序流程图 39
3.1.2 程序设计方法 39
3.2 基本C语句 40
3.2.1 表达式语句 41
3.2.2 复合语句 41
3.2.3 流程控制语句 42
3.3 关系运算及逻辑运算 42
3.3.1 关系运算 42
3.3.2 逻辑运算 43
3.3.3 条件运算 44
3.4 选择结构程序设计 44
3.4.1 条件语句 45
3.4.2 switch语句 48
3.5 循环程序结构设计 51
3.5.1 while语句 52
3.5.2 do...while循环语句 53
3.5.3 for循环语句 54
3.5.4 循环嵌套 55
3.5.5 continue和break语句 56
3.6 循环程序举例 57
3.6.1 三种循环的比较 57
3.6.2 应用举例 58
本章小结 61
实验三 分支与循环程序设计 61
习题三 62
第4章 函数 65
4.1 函数的定义及调用 65
4.1.1 函数的定义 66
4.1.2 函数声明 68
4.1.3 函数调用 69
4.2 函数的递归调用 71
4.3 变量的存储属性 72
4.3.1 局部变量与全局变量 73
4.3.2 动态变量与静态变量 76
4.3.3 寄存器变量 78
4.4 C语言的编译预处理 78
4.4.1 宏定义#define命令 79
4.4.2 文件包含#include命令 80
本章小结 81
实验四 函数的定义和使用 81
习题四 82
第5章 数组数据类型及其应用 85
5.1 一维数组 85
5.1.1 一维数组的定义 85
5.1.2 数组的初始化 86
5.1.3 数组元素的访问 86
5.1.4 数组作函数参数 87
5.2 二维数组 89
5.2.1 二维数组和多维数组的定义 89
5.2.2 二维和多维数组的初始化 90
5.2.3 二维数组的引用及举例 91
5.3 字符数组与字符串 94
5.3.1 字符串的处理 94
5.3.2 字符串的输入\输出 95
5.3.3 字符串的运算 96
5.3.4 二维字符数组及字符串的应用 98
5.3.5 字符串应用举例 99
5.4 线性表 100
5.4.1 线性表的定义和基本运算 100
5.4.2 线性表的存储结构 101
5.4.3 线性表的运算 101
5.5 栈和队列 103
5.5.1 栈 104
5.5.2 队列 104
5.6 稀疏矩阵 106
5.7 常用数据查找算法 108
5.7.1 顺序查找 108
5.7.2 折半查找 109
5.8 常用数据排序算法 111
5.8.1 基本概念 111
5.8.2 插入排序 112
5.8.3 交换排序 114
5.8.4 选择排序 117
本章小结 119
实验五 数组及线性表 120
实验六 排序及查询 121
习题五 121
第6章 指针 123
6.1 指针的概念 123
6.2 指针变量的定义和引用 124
6.2.1 指针变量的定义 124
6.2.2 指针变量的引用 125
6.2.3 有关指针的两个运算符 126
6.2.4 指针变量应用举例 127
6.3 指针与数组 130
6.3.1 一维数组与指针 130
6.3.2 二维数组的指针表示法 134
6.4 指针与字符串 135
6.5 指针与函数 138
6.5.1 指针变量作为函数的参数 138
6.5.2 返回指针值的函数 143
6.5.3 指向函数的指针变量 144
本章小结 146
实验七 指针的使用 147
习题六 148
第7章 结构体与共用体数据类型 149
7.1 结构体数据类型的定义和引用 149
7.1.1 结构体类型的定义 149
7.1.2 结构体类型变量的定义 150
7.1.3 结构体类型变量的引用 151
7.1.4 结构体类型变量的初始化 152
7.2 结构体数组及初始化 153
7.2.1 结构体数组的定义 153
7.2.2 结构体数组的初始化 154
7.3 结构体与指针 155
7.3.1 指向结构体变量的指针 155
7.3.2 指向结构体数组的指针 156
7.4 结构体与函数 158
7.5 线性链表 160
7.5.1 线性链表的概念 160
7.5.2 内存单元的动态分配 161
7.5.3 线性链表的初始化、建立和输出 163
7.5.4 线性链表的基本操作 166
7.6 循环链表 170
7.6.1 循环链表 170
7.6.2 双向循环链表 170
7.7 链栈和链队 173
7.7.1 链栈 173
7.7.2 链队 174
7.8 共用体数据类型 175
7.8.1 共用体类型的定义 175
7.8.2 共用体类型变量的引用 176
7.9 枚举类型 178
本章小结 180
实验八 链表的使用 181
习题七 181
第8章 树 184
8.1 树的基本概念 184
8.1.1 树的定义 184
8.1.2 树的基本术语 185
8.2 树的存储结构 186
8.2.1 双亲表示法 186
8.2.2 孩子表示法 187
8.2.3 孩子兄弟表示法 187
8.3 二叉树 188
8.3.1 二叉树的定义和性质 188
8.3.2 二叉树的存储结构 190
8.4 二叉树的遍历 192
8.4.1 二叉树的中根遍历 192
8.4.2 二叉树的先根遍历 193
8.4.3 二叉树的后根遍历 194
8. 5 线索树 197
8.5.1 线索树的结构 197
8.5.2 中根线索树的建立 198
8.5.3 结点的检索 200
8.5.4 结点的插入 201
8.6 二叉查找树 203
8.6.1 二叉查找树的定义及其结构 204
8.6.2 二叉查找树的建立 204
8.6.3 二叉查找树的查找过程 206
8.6.4 二叉查找树的删除 207
8.6.5 二叉查找树的查找分析及评价 209
8.7 堆排序 210
8.7.1 堆定义 210
8.7.2 堆的建立 210
8.7.3 堆排序的实现 211
本章小结 213
实验九 二叉树的遍历 214
习题八 214
第9章 图 216
9.1 基本概念 216
9.2 图的存储结构 218
9.2.1 邻接矩阵 219
9.2.2 邻接表 220
9.3 图的遍历 222
9.3.1 深度优先搜索(dfs) 223
9.3.2 广度优先搜索(bfs) 225
9.4 拓扑排序 228
9.5 最短路径 230
9.5.1 从某一源点到其他各顶点的最短路径 230
9.5.2 每对顶点间的最短路径 233
本章小结 235
习题九 235
第10章 文件 237
10.1 C文件概述 237
10.1.1 流和文件 237
10.1.2 缓冲区文件与非缓冲区文件 237
10.2 文件的打开与关闭 238
10.2.1 缓冲区文件定义 238
10.2.2 文件的打开与关闭 238
10.3 文件的输入与输出 240
10.3.1 读写一个字符 241
10.3.2 读写一个字符串 243
10.3.3 读写数据字段 244
10.3.4 格式化读写 247
10.4 文件的定位与随机读写 248
10.4.1 rewind()函数 249
10.4.2 fseek()函数 249
10.4.3 ftell()函数 250
本章小结 250
实验十 文件操作 251
习题十 251
第11章 C语言的位运算 253
11.1 位运算符 253
11.1.1 按位与运算符(&) 253
11.1.2 按位或运算符(|) 254
11.1.3 按位异或运算符(^) 254
11.1.4 取反运算符(~) 254
11.1.5 左移运算符(《) 254
11.1.6 右移运算符(》) 255
11.2 位段 255
本章小结 258
习题十一 258
第12章 图形及用户界面技术 259
12.1 设置图形模式 259
12.1.1 几种工作模式及特点 259
12.1.2 图形模式的初始化 260
12.1.3 颜色的设置 262
12.2 图形函数及图形设计 264
12.2.1 画点 264
12.2.2 画线 265
12.2.3 画圆 266
12.2.4 画组合图 267
12.3 窗口设计 268
12.3.1 什么是窗口 268
12.3.2 如何定义窗口 268
12.3.3 文本窗口的颜色设置 269
12.3.4 窗口的操作函数 270
12.3.5 窗口设计示例 271
12.4 光带选择菜单设计 273
12.4.1 功能键识别 273
12.4.2 光标控制 274
12.4.3 利用标准输出函数设计菜单 275
12.4.4 利用窗口操作函数设计菜单 277
12.5 应用举例 279
本章小结 282
实验十一 综合应用程序设计 283
习题十二 283
附录1 TurboC的安装及各选项的作用 284
附录2 错误信息英中文对照 289
附录3 ASCⅡ代码与字符对照表 291
附录4 关键字和运算符 293
附录5 常用库函数 294
参考文献 299