第1章 概论 1
1.1 C语言概述 1
1.1.1 计算机语言的发展过程 1
1.1.2 C语言出现的历史背景 3
1.1.3 C语言的特点 4
1.1.4 C语言的程序介绍 5
1.1.5 C语言程序设计的上机步骤 6
1.2 结构化程序设计的方法 7
1.2.1 结构化程序设计的思想 7
1.2.2 结构化程序设计的步骤 7
1.3 数据结构与算法 8
1.3.1 数据结构的基本概念 8
1.3.2 算法及算法的表示 9
1.3.3 数据结构与算法 13
习题 13
第2章 C语言的数据类型、运算符与表达式 14
2.1 C语言的数据类型 14
2.2 常量和变量 14
2.2.1 常量和符号常量 14
2.2.2 变量 15
2.3 整型数据 16
2.3.1 整型常量 16
2.3.2 整型变量 16
2.4 实型数据 18
2.4.1 实型常量 18
2.4.2 实型变量 18
2.5 字符型数据 19
2.5.1 字符型常量 19
2.5.2 字符型变量 20
2.5.3 字符串常量 21
2.6 变量的初始化 22
2.7 算术运算符和算术表达式 22
2.7.1 基本的算术运算符 23
2.7.2 算术表达式和运算符的优先级与结合性 23
2.7.3 算术运算类型转换和强制类型转换 24
2.7.4 自增、自减运算符 26
2.8 赋值运算符和赋值表达式 27
2.8.1 赋值表达式 27
2.8.2 赋值语句 27
2.8.3 复合赋值运算符 28
2.9 逗号运算符和逗号表达式 28
习题 29
第3章 结构控制语句 31
3.1 分支语句 31
3.1.1 关系运算符和关系表达式 31
3.1.2 逻辑运算符与逻辑表达式 32
3.1.3 if语句 33
3.1.4 switch语句 36
3.2 循环语句 37
3.2.1 while语句 37
3.2.2 do…while语句 38
3.2.3 for语句 38
3.2.4 循环的嵌套 40
3.2.5 goto语句和continue语句 43
3.3 程序举例 44
习题 50
第4章 数组 54
4.1 数组的定义、引用和初始化 54
4.1.1 一维数组的定义 54
4.1.2 一维数组的引用 55
4.1.3 一维数组的初始化 56
4.1.4 程序举例 57
4.2 多维数组 58
4.2.1 二维数组的定义 59
4.2.2 二维数组的初始化 59
4.2.3 二维数组的引用 60
4.3 字符数组 62
4.3.1 字符数组的定义和引用 62
4.3.2 字符串和字符串结束标志 62
4.3.3 字符数组的输入和输出 62
4.3.4 字符串函数 64
4.3.5 字符数组应用举例 66
习题 68
第5章 函数 71
5.1 函数的定义 71
5.2 函数的调用 74
5.3 数组作为函数参数 77
5.4 局部变量与全局变量 80
5.5 变量的存储类别 81
5.6 内部函数和外部函数 83
习题 84
第6章 数据的顺序存储结构及应用 86
6.1 线性表的顺序存储结构和运算 86
6.1.1 线性表的逻辑结构 86
6.1.2 线性表的顺序存储结构和基本运算 87
6.2 栈和队列的顺序存储结构和运算 89
6.2.1 栈 89
6.2.2 队列 94
6.3 检索算法 96
6.3.1 顺序表查找 96
6.3.2 哈希查找 99
6.4 排序算法 105
6.4.1 排序概述 105
6.4.2 插入排序 105
6.4.3 交换排序 108
6.4.4 选择排序 112
6.4.5 归并排序 117
习题 117
第7章 指针 120
7.1 指针的概念 120
7.2 变量的指针与指向变量的指针变量 121
7.2.1 指针变量的定义 121
7.2.2 指针变量的使用 121
7.3 数组的指针 126
7.3.1 指向数组的指针 126
7.3.2 通过指针引用数组元素 126
7.3.3 指针运算 127
7.3.4 数组名作为函数参数 128
7.3.5 指向二维数组的指针 130
7.4 字符串的指针与指向字符串的指针变量 132
7.4.1 字符串的两种表示形式 132
7.4.2 字符串指针作为函数参数 134
7.5 指针数组和指向指针的指针 135
7.5.1 指针数组 135
7.5.2 指向指针的指针 137
7.6 函数的指针 137
7.7 指针的应用 138
7.7.1 有关指针数据类型小结 139
7.7.2 指针应用程序举例 139
习题 142
第8章 数据的链式存储结构 143
8.1 结构体的概念 143
8.1.1 结构体类型的定义 143
8.1.2 结构体类型变量的定义 144
8.1.3 结构体类型变量的引用与初始化 146
8.2 结构体数组 148
8.2.1 结构体数组的定义 148
8.2.2 结构体数组的初始化 148
8.2.3 结构体数组的引用 149
8.3 结构体类型数据的指针 150
8.3.1 指向结构体变量的指针 150
8.3.2 指向结构体数组的指针 151
8.4 线性表的链式存储及运算 152
8.4.1 链表的概念 152
8.4.2 链表基本操作 153
8.5 队列 157
8.5.1 队列的概念 157
8.5.2 顺序队列和循环队列 158
8.5.3 链队列 160
8.6 共用体 162
8.6.1 共用体的概念 162
8.6.2 共用体变量的引用方式 163
习题 165
第9章 树和图 166
9.1 树结构的定义和基本术语 166
9.1.1 树的定义 166
9.1.2 基本术语 166
9.2 二叉树 167
9.2.1 二叉树的定义和基本运算 167
9.2.2 二叉树的性质 167
9.2.3 二叉树的存储结构 168
9.2.4 遍历二叉树 170
9.2.5 典型二叉树的操作算法 172
9.3 图的定义、存储和遍历 173
9.3.1 图的定义 173
9.3.2 图的相关术语 174
9.3.3 图的存储表示 175
9.3.4 图的遍历 176
9.4 图的应用 177
9.4.1 最小生成树问题 177
9.4.2 拓扑排序问题 179
习题 181
第10章 文件 183
10.1 概述 183
10.1.1 用文件输入/输出的概念 183
10.1.2 C文件分类 183
10.2 文件类型指针 184
10.3 文件的打开、关闭操作 184
10.3.1 文件的打开 185
10.3.2 文件的关闭 186
10.4 文件的读写操作 187
10.4.1 文本文件的读写 187
10.4.2 二进制文件的读写 190
10.4.3 文件的随机读写 192
10.4.4 出错的检测 194
习题 194