第0章 绪论 1
0-1 程序设计语言的发展 1
0-2 C程序设计语言及其特征 2
0-3 程序设计的基本方法 3
0-3-1 程序设计步骤 3
0-3-2 运行C语言程序 4
0-4 算法的特性和描述 4
0-4-1 算法的特性 5
0-4-2 算法的描述 5
0-5 结构化程序设计方法 7
0-5-1 自顶向下、逐步细化的设计过程 7
0-5-2 系统的模块化设计 8
0-5-3 结构化程序设计 9
0-6 小结 11
思考与练习题 11
第1章 C语言程序的数据表示 12
1-1 简单C程序的结构 12
1-1-1 C程序的组成和格式 13
1-1-2 关键字与标识符 13
1-1-3 常量和变量 14
1-2 基本数据类型的定义 15
1-2-1 整型常量和变量 16
1-2-2 实型常量和变量 16
1-2-3 字符型常量和变量 17
1-2-4 无值型 18
1-2-5 不可变的变量 18
1-3 数据的算术运算 19
1-3-1 基本的算术运算和表达式 19
1-3-2 数据类型的转换 20
1-4 赋值表达式和赋值语句 21
1-4-1 赋值和赋值表达式 21
1-4-2 复合赋值运算 22
1-5 使用C语言的标准库函数 22
1-6 自增、自减运算和逗号运算 23
1-6-1 自增和自减运算 23
1-6-2 逗号运算 24
1-7 位运算符和位运算表达式 25
1-7-1 移位运算符“<<”和“>>”的作用 26
1-7-2 位逻辑运算符的作用 27
1-7-3 位运算的复合赋值运算符 28
1-8 小结 28
思考与练习题 29
第2章 顺序结构程序设计 31
2-1 赋值语句、复合语句和空语句 31
2-2 数据的输入与输出 32
2-2-1 格式输出函数(printf函数) 33
2-2-2 格式输入函数(scanf函数) 35
2-2-3 字符输出函数 38
2-2-4 字符输入函数 38
2-3 顺序程序设计举例 39
2-4 小结 41
思考与练习题 41
第3章 选择结构程序的设计 44
3-1 选择结构形式 44
3-2 判断条件的描述方法 45
3-2-1 用关系表达式描述判断条件 45
3-2-2 用逻辑表达式描述判断条件 46
3-3 简单的分支选择结构 48
3-3-1 单路分支结构 48
3-3-2 双分支选择结构 48
3-3-3 条件运算符及其应用 50
3-4 多分支选择结构 51
3-4-1 if...else结构嵌套的应用 51
3-4-2 switch结构与break语句 53
3-5 程序举例与程序测试 56
3-6 小结 61
思考与练习题 62
第4章 循环结构的程序设计 65
4-1 当型循环和直到型循环结构 65
4-1-1 当型循环结构 65
4-1-2 直到型循环结构 67
4-1-3 当型循环结构和直到型循环结构的区别 69
4-2 for循环结构 69
4-3 循环的嵌套 71
4-4 continue语句和break语句在循环中的作用 74
4-4-1 break语句 74
4-4-2 continue语句 75
4-5 程序举例 75
4-6 小结 80
思考与练习题 81
第5章 函数的设计与应用 84
5-1 函数的概念 84
5-2 函数的定义 86
5-2-1 函数的定义形式 86
5-2-2 函数的返回值 87
5-3 函数的调用 88
5-3-1 函数的原型说明 88
5-3-2 函数的调用方式 89
5-3-3 函数的嵌套调用和递归调用 91
5-4 函数间的参数传递 93
5-4-1 地址结合方式传递数据 94
5-4-2 数值结合方式传递数据 94
5-4-3 利用全局变量传递参数 95
5-4-4 动态存储变量与静态存储变量 96
5-5 内部函数与外部函数 100
5-5-1 外部函数 100
5-5-1 内部函数 100
5-5-3 如何运行一个由多个源文件组成的程序 101
5-6 程序举例 102
5-7 小结 105
思考与练习题 105
第6章 编译预处理 108
6-1 宏定义 108
6-1-1 不带参数的宏定义 108
6-1-2 带参数的宏定义 109
6-2 文件包含命令 110
6-3 条件编译命令 113
6-3-1 #ifdef 113
6-3-2 #ifndef 114
6-3-3 #if 115
6-3-4 #undef 116
6-4 小结 116
思考与练习题 116
第7章 数组 119
7-1 一维数组的应用 119
7-1-1 一维数组的定义 119
7-1-2 一维数组元素的引用 120
7-1-3 一维数组的初始化 121
7-1-4 处理一维数组的常见操作方法 122
7-2 多维数组的应用 127
7-2-1 多维数组的定义和引用 128
7-2-2 多维数组的初始化 129
7-2-3 二维数组的简单应用 130
7-3 字符数组 132
7-3-1 字符数组的定义和初始化 132
7-3-2 字符串与字符数组 133
7-3-3 字符数组的输入与输出 133
7-3-4 常用的字符串处理函数 135
7-4 数组作为函数参数的应用 138
7-4-1 数组元素作函数的参数 138
7-4-2 数组名作函数的参数 138
7-5 小结 139
思考与练习题 140
第8章 指针 143
8-1 指针的定义 143
8-1-1 地址和指针 143
8-1-2 指针变量的定义 145
8-2 指针运算 145
8-2-1 取地址运算 146
8-2-2 指针的赋值运算 146
8-2-3 通过指针引用一个存储单元 147
8-2-4 指针(变量)的算术运算 147
8-2-5 指针的关系运算 149
8-3 指针与函数 149
8-3-1 指针做函数的参数 149
8-3-2 使函数返回一个指针值 150
8-4 指针与一维数组 150
8-4-1 数组的指针与数组元素的指针 150
8-4-2 数组指针作函数参数 152
8-5 指针与多维数组 152
8-5-1 多维数组的地址分析 152
8-5-2 多维数组的指针 153
8-6 指针与字符串 156
8-6-1 字符指针变量指向字符串 156
8-6-2 字符串指针作函数参数 157
8-7 指针数组 158
8-8 指向指针的指针 159
8-9 带参数的main函数 160
8-10 程序举例 161
8-11 小结 165
思考与练习题 165
第9章 结构体与共用体 169
9-1 结构体类型变量 169
9-1-1 结构体类型说明和结构体变量定义 170
9-1-2 结构体变量的引用 173
9-2 结构体数组 176
9-3 指向结构体变量的指针 179
9-3-1 结构体类型指针变量的定义和引用 179
9-3-2 指向结构体数组的指针 181
9-4 结构体类型的数据在函数间的传递 183
9-4-1 结构体变量的成员作函数参数 183
9-4-2 用结构体变量作函数参数 184
9-4-3 结构体类型的指针作函数参数 185
9-5 链表 187
9-5-1 链表的概念 187
9-5-2 从静态链表看链表的结构 189
9-5-3 利用动态内存分配函数建立动态链表 190
9-5-4 向链表中插入一个结点 193
9-5-5 从链表中删除一个指定的结点 198
9-6 共用体 202
9-6-1 共用体类型变量的定义 202
9-6-2 共用体变量的引用 203
9-7 枚举 204
9-7-1 声明枚举类型声明 205
9-7-2 枚举变量的定义和引用 205
9-8 自定义数据类型 207
9-9 程序举例 209
9-10 小结 212
思考与练习题 213
第10章 文件 217
10-1 文件的基本概念 217
10-1-1 文本文件与二进制文件 217
10-1-2 C语言文件的概述 218
10-2 文件的打开与关闭 219
10-2-1 文件的打开(fopen函数) 219
10-2-2 文件的关闭(fclose函数) 221
10-3 文件的顺序读写 221
10-3-1 单个字符的读写(fputc函数和fgetc函数) 222
10-3-2 判文件结束函数(feof函数) 224
10-3-3 按格式读写文本文件(fprintf函数和fscanf函数) 225
10-3-4 每次一行的读写(fputs函数和fgets函数) 227
10-3-5 数据块的读写(fread函数和fwrite函数) 228
10-4 文件的定位和文件的随机读写 230
10-4-1 rewind函数 231
10-4-2 fseek函数 231
10-4-3 ftell函数 233
10-5 检测出错的方法 234
10-5-1 ferror函数 234
10-5-2 clearerr函数 234
10-6 小结 234
思考与练习题 235
第11章 C语言上机操作初步 238
11-1 TC开发环境 238
11-1-1 TC开发环境介绍 238
11-1-2 实例 248
11-1-3 单步调试 250
11-2 VC开发环境 252
11-2-1 VC开发环境介绍 252
11-2-2 TC开发实例 253
11-3 小结 257
思考与练习题 257
附录A ASCII码表 258
附录B C语言标准函数库中的常用函数 259
附录C 二级考试大纲索引 264
附录D 二级考试样题 267
参考文献 291