目录 1
第1章 C语言的基本概念 1
1.1 C语言的发展与特点 1
1.1.1 C语言的发展 1
1.1.2 C语言的特点 1
1.2 几个基本概念 2
1.2.1 程序 2
1.2.4 数据结构 3
1.2.3 算法 3
1.2.2 程序设计 3
1.3 软件工程的概念 4
1.4 C语言程序的基本标识符 4
1.5 C程序的几个简单实例 6
1.6 C程序的结构特点 8
1.7 C语言程序的编译和执行 9
习题 10
2.1.1 数据类型的一般概念 11
第2章 C语言程序的基本数据类型及其运算 11
2.1 C语言的数据类型 11
2.1.2 常量 12
2.2 数据类型及变量 15
2.2.1 基本数据类型 15
2.2.2 变量的定义 16
2.2.3 变量的初始化 16
2.2.4 数据类型转换 17
2.3 运算符和表达式 19
2.3.1 运算符和表达式概述 19
2.3.2 赋值运算符和赋值表达式 20
2.3.3 算术运算符和算术表达式 21
2.3.4 关系运算符和关系表达式 23
2.3.5 逻辑运算符和逻辑表达式 23
2.3.6 条件运算符 24
2.3.7 其他运算符 25
2.4.1 按位取反运算符 26
2.4 位运算符 26
2.4.2 移位运算符 27
2.4.3 按位“与”、按位“或”、按位“异或” 27
2.5 C语言基本输入输出函数 29
2.5.1 字符输入输出函数 29
2.5.2 格式化输入输出函数 30
习题 38
第3章 C语言程序基本控制结构及其应用 41
3.1 算法及结构化程序设计 41
3.1.1 算法及其特征 41
3.1.2 算法的类型与结构 43
3.2 顺序结构程序设计 44
3.3 分支结构程序设计 46
3.3.1 if分支 46
3.3.2 if-else分支 46
3.3.3 多分支if...else if...else形式 47
3.3.4 条件分支的嵌套 48
3.3.5 开关分支 50
3.4 循环结构程序设计 54
3.4.1 while语句 54
3.4.2 do-while语句 54
3.4.3 for语句 55
3.4.4 三种循环的比较 57
3.4.5 多重循环 57
3.4.6 循环和开关分支的中途退出 59
3.4.7 goto语句 61
3.4.8 结构化程序设计注意事项 62
3.5 结构化程序应用举例 64
习题 68
第4章 数组及其应用 74
4.1 一维数组 74
4.1.1 一维数组的定义 74
4.1.2 一维数组的存储形式 75
4.1.3 一维数组的初始化 75
4.1.4 一维数组的引用 76
4.1.5 一维数组的应用举例 77
4.2 多维数组 79
4.2.1 多维数组的定义 79
4.2.2 多维数组的存储形式 79
4.2.3 多维数组的引用 80
4.2.4 多维数组的初始化 81
4.2.5 多维数组的应用举例 82
4.3 字符型数组与字符串 83
4.3.1 字符型数组的概念 83
4.3.2 字符型数组的初始化 84
4.3.3 字符型数组的输入输出 85
4.3.4 字符型数组的应用举例 86
4.4 综合应用举例 87
习题 90
5.1 函数的定义与调用 97
5.1.1 C源程序的结构 97
第5章 函数及其应用 97
5.1.2 函数的定义 98
5.1.3 函数的调用 100
5.2 函数间的信息传递方式 104
5.2.1 实参-形参之间的信息传递 105
5.2.2 函数调用结果的返回 109
5.3 函数与数组 111
5.3.1 数组元素作实参 111
5.3.2 一维数组名作实参 112
5.3.3 多维数组名作参数 113
5.3.4 字符数组作函数的参数 115
5.4 递归函数与递归调用 116
5.4.1 递归的概念 116
5.4.2 递归程序的设计 117
5.5 变量的存储类型及作用域 118
5.5.1 auto型变量 119
5.5.2 extern型变量 119
5.5.3 register型变量 122
5.5.4 静态变量 123
习题 126
第6章 指针 130
6.1 指针的基本概念及定义方式 130
6.1.1 指针的基本概念 130
6.1.2 指针的定义 131
6.1.3 指针的初始化 131
6.1.4 指针运算符 133
6.2 指针的运算 133
6.2.1 指针的算术运算 133
6.2.2 关系运算 135
6.2.3 指针的赋值运算 135
6.3 指针与数组 136
6.3.1 指向一维数组的指针 136
6.3.2 指向多维数组的指针 138
6.4 字符指针和字符串 140
6.5.1 指针数组的概念 142
6.5 指针数组 142
6.5.2 指针数组的应用 143
6.5.3 指针数组在带形参的main函数中的应用 145
6.6 指针在函数参数传递中的应用 147
6.7 指针型函数 148
6.7.1 指针型函数的定义和引用 148
6.7.2 指针型函数的应用举例 148
6.8.1 多级指针的概念及定义 150
6.8 多级指针 150
6.8.2 多级指针应用举例 151
6.9 指向函数的指针 152
6.9.1 指向函数的指针的概念 152
6.9.2 指向函数的指针的应用 153
6.10 动态指针 155
6.10.1 动态内存分配的概念 155
6.10.2 动态内存分配的应用 158
习题 160
7.1 用C语言图形库函数绘图 165
7.1.1 显示方式及图形方式的初始化 165
第7章 图形设计与应用 165
7.1.2 常用图形函数 169
7.2 复杂图形的绘制和图形程序设计方法 179
7.2.1 复杂图形的绘制 179
7.2.2 图形程序设计中的递归算法及其应用 184
习题 186
8.1.2 结构体的说明及结构体变量的定义 187
8.1.1 什么叫结构体 187
8.1 结构体的说明和定义 187
第8章 结构体、联合体和枚举 187
8.2 结构体成员的引用与结构体变量的初始化 190
8.2.1 结构体成员的引用 190
8.2.2 结构体变量的初始化 191
8.3 结构体数组 192
8.3.1 结构体数组的定义及初始化 192
8.3.2 结构体数组的应用举例 193
8.4.1 结构体指针及其定义 195
8.4 结构体指针 195
8.4.2 通过指针引用结构体成员 196
8.4.3 结构体指针的应用举例 196
8.5 结构体在函数间的传递 199
8.5.1 结构体变量的传递 199
8.5.2 结构体数组在函数间的传递 202
8.6 结构体指针型和结构体型函数 204
8.6.1 结构体指针型函数 204
8.6.2 结构体型函数 206
8.7 结构体嵌套 207
8.7.1 什么是结构体嵌套 207
8.7.2 嵌套结构体类型变量的引用 208
8.7.3 结构体嵌套应用举例 210
8.8 联合体 211
8.8.1 联合体的说明及联合体变量的定义 211
8.8.2 使用联合体变量应注意的问题 215
8.9.2 枚举型变量的使用 217
8.9.1 枚举类型数据的概念及其定义 217
8.9 枚举类型 217
8.10 自定义类型 219
8.10.1 自定义类型及其表示形式 219
8.10.2 自定义类型的优点 220
8.11 位字段结构体 221
习题 221
第9章 排序及查找算法及其实现 226
9.1 排序概述 226
9.1.1 排序的概念 226
9.1.2 排序的定义 226
9.1.3 排序的方法 227
9.1.4 排序效率 227
9.2 冒泡排序法的设计及其实现 229
9.2.1 冒泡算法设计思想 229
9.2.2 冒泡算法的实现 230
9.3.1 选择排序法设计思想 231
9.3 选择排序法的设计及其实现 231
9.3.2 选择排序法的实现 232
9.4 插入排序法的设计及其实现 233
9.4.1 插入排序法设计思想 233
9.4.2 插入排序法的实现 234
9.5 SHELL排序法的设计及其实现 235
9.5.1 SHELL排序法设计思想 235
9.5.2 SHELL排序法的实现 237
9.6.1 字符串数组的排序算法设计思想 238
9.6 字符串数组的排序设计及其实现 238
9.6.2 字符串数组排序算法的实现 239
9.7 查找概述 240
9.8 顺序查找及其应用 241
9.8.1 顺序查找算法的设计思想 241
9.8.2 顺序查找算法的实现 241
9.9 折半查找及其应用 242
9.9.1 折半查找算法的设计思想 242
9.9.2 折半查找算法的实现 243
习题 244
第10章 文件操作 245
10.1 文件的概念 245
10.2 文件的基本操作 248
10.2.1 文件的打开 248
10.2.2 文件的关闭 249
10.2.3 文件的删除 250
10.2.4 文件的重命名 250
10.2.5 临时文件的创建 250
10.3 文件的读写操作 251
10.3.1 文件的非格式化读写 251
10.3.2 文件的格式化写操作 257
10.3.3 文件的格式化读操作 259
10.4 文件的定位 260
10.4.1 fgetpos函数 260
10.4.2 fsetpos函数 260
10.4.4 fseek函数 261
10.4.3 ftell函数 261
10.4.5 feof函数 262
10.5 错误处理 262
10.5.1 ferror函数 263
10.5.2 perror函数 263
习题 263
第11章 链表及其应用 269
11.1.1 链表的定义及基本结构 270
11.1 链表的基本概念 270
11.1.2 动态内存分配 271
11.2 链表的基本操作方法 271
11.2.1 链表的建立 271
11.2.2 链表结点的访问 273
11.2.3 同结构链表的连接 274
11.2.4 链表结点的插入 274
11.2.5 结点的删除 277
11.2.6 释放链表存储空间 279
11.4 双向链表 280
11.3 循环链表 280
11.5 链表的应用 281
习题 284
第12章 栈及其应用 287
12.1 栈的定义及其基本操作 287
12.2 栈的实现 288
12.2.1 栈的数组实现 288
12.2.2 栈的链式存储实现 290
12.3.1 进制转换的算法 292
12.3 进制转换——栈的应用实例 292
12.3.2 算法的实现 293
习题 295
第13章 队列及其应用 296
13.1 队列的定义及基本操作 296
13.2 队列的实现 296
13.2.1 用循环数组实现队列 297
13.2.2 用线性表实现队列操作 301
13.3 队列的应用 303
习题 306
第14章 二叉树及其应用 307
14.1 树的概念 307
14.2 关于树的一些术语及特性 308
14.3 二叉树的特点与数学性质 309
14.3.1 二叉树的特点 309
14.3.2 两种特殊形态的二叉树 310
14.3.3 二叉树的数学性质 311
14.4.2 二叉树基本操作的实现 312
14.4 二叉树的基本操作及其实现 312
14.4.1 二叉树的基本操作 312
14.5 二叉树的应用 317
习题 320
附录A 预处理命令的应用 322
附录B Turbo C3.0的上机过程 333
附录C Turbo C3.0程序的调试 338
附录D ASCII码表 346
参考文献 347