第一章 概论 1
1.1 计算机软件及其发展 1
1.1.1计算机软件的定义 1
1.1.2计算机软件的功能及分类 1
1.1.3计算机软件的发展 2
1.1.4 软件工程学的基本概念 3
1.2 程序设计的实现 4
1.2.1 程序设计语言 4
1.2.2 语言处理程序 6
1.3 算法与算法描述 8
1.3.1 算法的概念 8
1.3.2 程序设计的基本过程 8
1.3.3 程序设计风格 12
习题 13
第二章 C语言基础 14
2.1 概述 14
2.1.1 C语言的发展背景 14
2.1.2 C语言的特点 14
2.1.3 简单的C程序介绍 15
2.1.4 C程序的开发过程 16
2.2 C的数据类型与运算 16
2.2.1 C的数据类型 16
2.2.2 常量与变量 17
2.2.3 整型数据 18
2.2.4 实型数据 19
2.2.5 字符型数据 20
2.2.6 算术运算符和算术表达式 21
2.2.8 其他运算 23
2.2.7 算术赋值运算 23
2.3 C语句概述 25
2.4 终端上的数据输入和输出 26
2.4.1 格式输入和格式输出函数 26
2.4.2 字符输入和字符输出函数 27
习题 28
第三章 C程序控制结构 30
3.1 结构化程序设计 30
3.1.1 结构化程序设计的基本思想 30
3.1.2 关于goto语句 30
3.2 顺序结构 31
3.3 选择结构 31
3.3.1 if语句 31
3.3.2 if语句的嵌套 33
3.3.3 条件表达式构成的选择结构 34
3.3.4 switch语句 35
3.4 循环结构 36
3.4.1 while语句 36
3.4.2 do-while语句 37
3.4.3 for语句 38
3.4.4循环结构的嵌套 40
3.4.5 break语句和continue语句 40
3.4.6 用goto语句构成循环 41
3.5 控制结构程序设计 42
习题 47
第四章 函数 49
4.1 概述 49
4.2 函数的定义 50
4.3 函数的类型、参数和值 51
4.3.1 形式参数和实际参数 51
4.3.2 函数的类型和返回值 52
4.4.1 函数调用的一般形式 54
4.4 函数的调用 54
4.4.2 函数调用的方式 56
4.4.3 函数调用的前提条件 56
4.4.4 函数的说明 57
4.4.5 函数的嵌套调用 58
4.4.6 函数的递归调用 59
4.5 变量及其存储类型 64
4.5.1 变量及其存储分类 64
4.5.2 局部变量及其存储方式 65
4.5.3 全局变量及其存储方式 68
4.5.4 变量的存储类别小结 72
4.5.5 函数的存储方式 74
习题 77
5.1.1 一维数组的定义 78
第五章 数组 78
5.1 一维数组的定义和引用 78
5.1.2 一维数组元素的引用 79
5.1.3 一维数组的初始化 79
5.1.4 应用举例 80
5.2 二维数组的定义和引用 81
5.2.1二维数组的定义 81
5.2.2 二维数组的引用 82
5.2.3 二维数组的初始化 82
5.2.4 二维数组程序举例 83
5.3 字符数组 84
5.3.1字符数组的定义 84
5.3.2字符数组的初始化 84
5.3.3字符数组的引用 84
5.3.5字符数组的输入输出 85
5.3.4 字符串 85
5.3.6字符串处理函数 87
5.3.7字符数组应用举例 89
5.4 数组作为函数参数 91
5.4.1 数组元素作函数实参 91
5.4.2 数组名作函数参数 91
5.4.3 用多维数组作函数参数 92
习题 93
第六章 指针 94
6.1 指针变量 94
6.1.1 指针的概念 94
6.1.2 运算和*运算 94
6.1.3 指针对数据的处理 95
6.2.1 指针的说明 96
6.2 指针的说明与引用 96
6.2.2 指针类型转换 97
6.2.3 指针的引用 98
6.3 指向数组的指针 102
6.4 指向字符串的指针 104
6.4.1 对指向字符串的指针赋值 104
6.4.2 指向字符串的指针的应用 105
6.5 指向函数的指针 107
6.6 指针数组 110
6.7 指向指针的指针 113
6.8 指针函数 115
6.9 指针作函数的参数 118
6.10 指针的复杂说明及其应用 121
习题 121
7.1.1 结构的定义形式 124
7.1 结构的定义和引用 124
第七章 结构与联合 124
7.1.2 定义结构类型变量的方法 125
7.1.3 结构变量的引用 127
7.1.4 结构类型变量的初始化 127
7.2 结构数组 128
7.2.1 结构数组的定义 128
7.2.2 结构数组的初始化 128
7.2.3 举例 129
7.3 结构指针 129
7.3.1 指向结构变量的指针 130
7.3.2 指向结构数组的指针 131
7.3.3 指向结构的指针作函数参数 132
7.4 联合 133
7.4.1 联合的定义 133
7.4.2 联合变量的引用方式 134
7.4.3 联合类型数据的特点 136
7.5 枚举类型 136
7.5.1 枚举型变量 139
7.5.2 标识常量 139
7.6 类型定义 142
7.7 位操作 142
7.7.1 位逻辑运算 143
7.7.2 移位操作 145
7.7.3 位操作赋值运算 145
习题 145
第八章 文件 147
8.1 文件的基本概念 147
8.1.1 操作系统的功能和类型简介 147
8.1.2 文件的分类 149
8.2.1 文件的打开、关闭 150
8.1.3 文件类型指针 150
8.2 缓冲文件系统 150
8.2.2 文件的输入/输出操作 152
8.3 非缓冲文件系统 156
8.3.1 文件的打开、关闭和建立 157
8.3.2 文件的输入、输出和随机存取 158
8.3.3 程序举例 159
习题 160
第九章 数据结构 162
9.1 数据结构的基本概念 162
9.1.1 什么是数据结构 162
9.1.2 基本术语 163
9.2 线性表 164
9.2.1 线性表的定义及基本运算 164
9.1.3 算法和算法分析 164
9.2.2 线性表的顺序存储结构 165
9.2.3 线性表的链式存储结构——单链表 168
9.2.4 线性表的链式存储结构——双向链表 170
9.2.5 多项式相加 170
9.3 栈 172
9.3.1 栈的定义及基本运算 172
9.3.2 栈的顺序存储结构 173
9.3.3 栈的链式存储结构 175
9.3.4 数制转换 175
9.4 队列 176
9.4.1 队列的定义及基本运算 176
9.4.2 队列的链式存储结构 176
9.4.3 队列的顺序存储结构 177
9.5.1 串的定义及基本运算 179
9.5 串 179
9.5.2 串的定长顺序存储结构 180
9.5.3 串的链式存储结构 181
9.5.4 文本编辑 181
9.6 树 182
9.6.1 树的定义及基本运算 182
9.6.2 二叉树 184
9.6.3 遍历二叉树 186
9.6.4 树与二叉树的转换及遍历 188
9.6.5 哈夫曼树 191
9.7 图 191
9.7.1 图的定义和基本运算 192
9.7.2 图的存储结构 194
9.7.3 图的遍历 195
9.7.4 单源最短路径 197
9.7.5 关键路径 199
9.8 查找 201
9.8.1 基本概念 201
9.8.2 顺序查找 202
9.8.3 折半查找 202
9.8.4 分块查找 203
9.8.5 二叉排序树查找 203
9.8.6 哈希查找 204
习题 206
第十章 应用程序设计举例 209
10.1 基本算法 209
10.1.1 累加求和 209
10.1.2 求连乘积 210
10.1.3 递推法 210
10.1.4 枚举法 211
10.2 查找特定整数法 214
10.2.1 拆数法 214
10.2.2 凑数法 215
10.3 有关数论的算法 216
10.3.1 最大公约数 216
10.3.2 素数及其应用 217
10.3.3 因数及其应用 219
10.4 数据查询与统计 220
10.4.1 数据查询 220
10.4.2 数据统计 222
10.5 排序 222
10.6 搜索 226
10.7 平面图表 229
10.7.1 基本平面图形 229
10.7.2 填字平面图形 230
10.8 排列与组合 232
10.8.1 排列 232
10.8.2 组合 234
10.9 超长整数的处理 234
10.10 递归与回溯 237
10.10.1 递归 237
10.10.2 回溯 239
习题 242
附录A C语言中的关键字 244
附录B 运算符和结合性 245
附录C 常见错误和程序调试 247
附录D C库函数 255
附录E C预处理程序 260
附录F Turbo C 2.0使用简介 266