第1章 C语言概述 1
1.1 C语言的发展过程 1
1.1.1 C语言的地位 2
1.1.2 C语言的特点 3
1.2 编写一个简单C语言程序 4
1.2.1 C语言程序运行步骤 5
1.2.2 C语言程序编译环境 6
习题 14
第2章 数据类型及基本输入输出 15
2.1 基本数据类型 15
2.2 标识符 15
2.3 常量 16
2.3.1 数值常量 16
2.3.2 标识符常量 18
2.4 变量 19
2.4.1 变量的定义 19
2.4.2 变量类型及存储单元 20
2.4.3 变量的初始化 23
2.5 数据类型的混合运算 24
2.5.1 自动类型转换规则 24
2.5.2 强制类型转换 25
2.6 算术运算符与算术表达式 26
2.6.1 C语言的运算符 26
2.6.2 基本的算术运算符 27
2.6.3 算术表达式 27
2.6.4 算术运算符的优先级、结合性 27
2.6.5 自增、自减运算符 28
2.7 赋值运算符与赋值表达式 29
2.7.1 基本赋值运算符 29
2.7.2 复合赋值运算符 29
2.7.3 类型转换 30
2.8 逗号运算符与逗号表达式 31
2.8.1 逗号运算符 31
2.8.2 逗号表达式 31
2.9 基本输入输出函数 32
2.9.1 数据输入输出的概念及在C语言中的实现 32
2.9.2 字符数据的输入输出 33
2.9.3 格式输入输出 35
习题 44
第3章 控制流程 47
3.1 算法 47
3.1.1 算法概述 47
3.1.2 算法的特性 49
3.1.3 算法的表示方法 49
3.1.4 流程图 49
3.1.5 三种基本结构和改进的流程图 50
3.1.6 N-S流程图 53
3.2 顺序结构程序设计 54
3.2.1 表达式语句 54
3.2.2 函数调用语句 55
3.2.3 控制语句 55
3.2.4 复合语句 56
3.2.5 空语句 57
3.3 选择结构程序设计 57
3.3.1 关系运算符及关系表达式 57
3.3.2 逻辑运算符及逻辑表达式 58
3.3.3 if语句 61
3.3.4 switch语句 69
3.4 循环结构 71
3.4.1 goto语句 72
3.4.2 while语句 72
3.4.3 do…while语句 74
3.4.4 for语句 76
3.4.5 循环语句的嵌套 78
3.5 break与continue语句 79
3.5.1 break语句 79
3.5.2 continue语句 80
3.6 应用实例 81
习题 85
第4章 数组 89
4.1 一维数组 89
4.1.1 一维数组的定义 89
4.1.2 一维数组的初始化 90
4.1.3 一维数组的引用 91
4.2 二维数组 92
4.2.1 二维数组的定义 92
4.2.2 二维数组的初始化 93
4.2.3 二维数组的引用 95
4.3 字符数组 96
4.3.1 字符数组的定义 96
4.3.2 字符数组的初始化 97
4.3.3 字符数组的引用 97
4.4 数组与存储单元 97
4.4.1 一维数组元素的存储 98
4.4.2 二维数组元素的存储 98
4.4.3 字符串的存储 99
4.5 应用实例 99
习题 103
第5章 函数 105
5.1 结构化程序设计方法 105
5.1.1 自顶向下、逐步细化的方法 106
5.1.2 系统的模块设计 106
5.1.3 结构化编码 107
5.2 函数的定义 108
5.2.1 无参函数的定义形式 108
5.2.2 有参函数的定义形式 109
5.3 函数的调用 110
5.3.1 实参与形参 110
5.3.2 函数的返回值 112
5.4 函数的嵌套调用和递归调用 112
5.4.1 函数的嵌套调用 113
5.4.2 函数的递归调用 114
5.5 数组作为函数的参数传递 117
5.5.1 数组元素作函数实参 117
5.5.2 数组名作函数参数 118
5.6 存储类别和变量的作用域 123
5.6.1 动态存储方式与静态存储方式 123
5.6.2 auto变量 123
5.6.3 用static声明局部变量 124
5.6.4 register变量 125
5.6.5 用extern声明外部变量 126
5.6.6 变量的作用域 126
5.7 应用实例 130
习题 139
第6章 指针 140
6.1 指针的概念 140
6.2 指针与指针的运算 141
6.2.1 指针定义与初始化 141
6.2.2 指针的运算 142
6.2.3 直接引用与间接引用 144
6.2.4 多级间址 147
6.3 指针与数组 148
6.3.1 指针与一维数组的关系 148
6.3.2 指针与二维数组的关系 150
6.3.3 指向一个由n个元素组成的数组指针 152
6.3.4 指针数组 154
6.3.5 动态数组 156
6.4 指针与函数 159
6.4.1 指针作函数的形参 161
6.4.2 数组与指针作函数的形参的比较 162
6.4.3 返回指针值的函数 167
6.4.4 指向函数的指针 169
6.5 指针与字符串 172
6.5.1 字符串的表示方法 172
6.5.2 字符指针作函数参数 174
6.5.3 字符型指针数组 176
6.6 带参数的main函数 177
6.7 应用实例 178
6.7.1 需要多个返回值时采用指针作参数的实例 178
6.7.2 用指针实现更为灵活的数组操作的实例 181
6.7.3 指针与字符串的应用实例 183
习题 186
第7章 结构体 190
7.1 概述 190
7.2 结构体类型的定义 191
7.3 结构体变量的定义及初始化 191
7.3.1 结构体变量的定义 191
7.3.2 结构体成员的引用 193
7.3.2 结构体变量的初始化 194
7.4 结构体数组 196
7.4.1 结构体数组的定义 197
7.4.2 结构体数组的初始化 197
7.4.3 结构体数组的应用实例 198
7.5 指针与结构体 203
7.5.1 结构体指针的定义与使用 204
7.5.2 指向结构体数组的结构体指针 205
7.5.3 结构体指针作函数参数 207
7.6 联合体 209
7.7 枚举 212
7.8 用typedef定义类型 215
7.9 应用实例 216
7.9.1 简单结构体变量的参数传递 216
7.9.2 结构体数组的排序 218
7.9.3 结构体、联合体以及枚举的综合实例 221
习题 224
第8章 简单数据结构 226
8.1 数据结构概述 226
8.2 顺序表 226
8.2.1 顺序表的创建 227
8.2.2 顺序表的插入 228
8.2.3 顺序表的删除 231
8.3 链表 232
8.3.1 单链表的创建 233
8.3.2 单链表的插入 235
8.3.3 单链表的删除 238
8.4 栈 240
8.4.1 栈的创建 241
8.4.2 栈的入栈操作 243
8.4.3 栈的出栈操作 244
8.5 队列 250
8.5.1 队列的创建 251
8.5.2 队列的人队操作 253
8.5.3 队列的出队操作 254
8.6 应用实例 260
8.6.1 链表应用实例 260
8.6.2 栈的应用实例 264
8.6.3 队列的应用实例 267
习题 271
第9章 预处理命令 273
9.1 #include预处理命令 273
9.2 #define命令 274
9.2.1 无参#define命令 274
9.2.2 有参#define命令 276
9.3 条件编译命令 277
9.3.1 #if、#else、#elif以及#endif命令 277
9.3.2 #ifdef与#ifndef命令 279
习题 280
第10章 文件 282
10.1 文件概述 282
10.2 文件结构体 284
10.3 文件打开与关闭函数 285
10.3.1 文件打开函数(fopen函数) 285
10.3.2 文件关闭函数(fclose函数) 287
10.4 输入与输出函数 288
10.4.1 fgetc函数与fputc函数 288
10.4.2 fgets函数与fputs函数 292
10.4.3 fread函数与fwrite函数 294
10.4.4 fscanf函数与fprintf函数 295
10.5 fseek函数和二进制随机文件 297
10.5.1 文件定位 297
10.5.2 文件的随机读写 298
10.6 应用实例 299
习题 305
参考文献 308