第1章 C语言概述 1
1.1 计算机语言与程序 1
1.1.1 机器语言与程序 1
1.1.2 汇编语言与程序 1
1.1.3 高级语言与程序 2
1.2 C语言的发展及其特点 3
1.3 简单的C程序 4
1.4 程序开发的步骤 6
习题1 6
第2章 数据类型、运算符和表达式 7
2.1 保留字和标识符 7
2.1.1 保留字 7
2.1.2 标识符 7
2.2 C语言的基本数据类型 8
2.3 常量和变量 9
2.3.1 常量 9
2.3.2 符号常量 11
2.3.3 变量 12
2.4 基本运算符和表达式 13
2.4.1 C语言运算符及表达式简介 13
2.4.2 算术运算符和算术表达式 14
2.4.3 运算符的优先级和结合性 14
2.4.4 关系运算符和关系表达式 14
2.4.5 逻辑运算符和逻辑表达式 15
2.4.6 位运算符和位运算表达式 15
2.4.7 自增、自减运算符和表达式 19
2.4.8 赋值运算符和赋值表达式 19
2.4.9 逗号运算符和逗号表达式 20
2.4.10 sizeof()运算符和表达式 20
2.4.11 逻辑表达式运算优化的副作用 21
2.5 类型转换 21
2.5.1 赋值时的自动类型转换 21
2.5.2 各种类型运算量混合运算时的自动类型转换 23
2.5.3 强制类型转换 24
习题2 24
第3章 标准设备的输入输出 26
3.1 输入输出的基本概念 26
3.2 格式化输入输出函数的使用 26
3.2.1 格式化输出函数printf() 26
3.2.2 格式化输入函数scanf() 32
3.3 常用的字符输入输出函数 36
3.4 顺序结构程序设计举例 37
习题3 39
第4章 C语言的流程控制 43
4.1 算法概述 43
4.1.1 算法及其效率 43
4.1.2 算法的设计原则 44
4.1.3 算法的表示工具 45
4.1.4 结构化程序设计中基本结构的表示 47
4.2 C程序的结构和语句概述 49
4.3 选择结构语句 51
4.3.1 if语句 51
4.3.2 if语句的嵌套使用 54
4.3.3 条件运算符 56
4.3.4 switch语句 58
4.4 循环结构语句 62
4.4.1 goto语句及标号的使用 62
4.4.2 while语句 63
4.4.3 for语句 64
4.4.4 do-while语句 66
4.4.5 break语句和continue语句 67
4.4.6 循环的嵌套 69
4.5 控制语句应用举例 70
习题4 78
第5章 函数 80
5.1 概述 80
5.2 函数的定义与调用 81
5.2.1 函数的定义 81
5.2.2 函数的调用 83
5.2.3 函数的参数 84
5.3 函数的原型说明 85
5.4 函数的嵌套调用和递归调用 87
5.4.1 函数的嵌套调用 87
5.4.2 函数的递归调用 92
5.5 使用C系统函数 97
5.6 作用域和存储类别 99
5.6.1 作用域 99
5.6.2 存储类别 102
5.6.3 全局变量的作用域的扩展和限制 106
5.7 程序的多文件组织 108
5.7.1 内部函数和外部函数 109
5.7.2 多文件组织的编译和连接 110
习题5 111
第6章 编译预处理 114
6.1 宏定义 114
6.1.1 不带参数的宏定义 114
6.1.2 带参数的宏定义 116
6.2 文件包含 119
6.3 条件编译 120
习题6 123
第7章 数组 125
7.1 数组的定义及应用 125
7.1.1 一维数组的定义及使用 125
7.1.2 一维数组作函数参数 129
7.1.3 多维数组的定义及使用 141
7.1.4 二维数组作函数参数 143
7.2 字符数组的定义及应用 150
7.2.1 字符数组的定义 150
7.2.2 字符数组的初始化 150
7.2.3 字符数组的使用 151
7.2.4 字符串和字符串结束标志 152
7.2.5 字符数组的输入输出 153
7.2.6 字符串处理函数 155
7.2.7 字符数组应用举例 158
习题7 162
第8章 结构体、共用体和枚举类型 164
8.1 结构体的定义及应用 164
8.1.1 结构体类型的定义 164
8.1.2 结构体类型变量的定义 165
8.1.3 结构体类型变量及其成员的引用 167
8.1.4 结构体数组 170
8.2 共用体的定义及应用 173
8.2.1 共用体类型及其变量的定义 173
8.2.2 共用体类型变量的引用 174
8.2.3 共用体数据类型的特点 175
8.3 枚举类型 176
8.3.1 枚举类型的定义 176
8.3.2 枚举类型变量的定义 177
8.3.3 枚举类型变量的使用 177
8.4 用typedef定义类型 181
习题8 183
第9章 指针 184
9.1 指针和指针变量 184
9.1.1 指针的概念 184
9.1.2 指针变量的定义 184
9.1.3 与指针有关的运算符&和* 185
9.1.4 指针变量的初始化 185
9.1.5 直接访问和间接访问 185
9.1.6 地址值的输出 189
9.2 指针作函数参数 189
9.2.1 基本类型量作函数参数 189
9.2.2 指针变量作函数参数 190
9.3 指针和指向数组的指针 192
9.3.1 指针和一维数组 192
9.3.2 一维数组元素指针作函数参数 196
9.3.3 指针和字符串 201
9.3.4 二维数组与指针 206
9.3.5 获得函数处理结果的几种方法 211
9.4 指针数组 213
9.4.1 指针数组的定义和使用 213
9.4.2 使用指针数组处理二维数组 214
9.4.3 利用字符指针数组处理字符串 215
9.4.4 main函数的参数 217
9.5 指向指针的指针 219
9.6 指针和函数 220
9.6.1 函数指针 220
9.6.2 返回指针的函数(指针函数) 223
9.7 指针小结 224
习题9 227
第10章 链表及其算法 230
10.1 存储空间的动态分配和释放 230
10.2 结构体及指针 232
10.3 链表及算法 234
10.3.1 链表概念的引入 234
10.3.2 不带头结点的链表的常用算法 236
10.3.3 带头结点的链表的常用算法 243
习题10 249
第11章 数据文件的使用 251
11.1 输入输出的基本概念 251
11.2 文件的基本概念和分类 251
11.3 缓冲的概念 252
11.4 文件的读写过程 253
11.4.1 文件类型指针 253
11.4.2 文件的打开与关闭 254
11.5 文件的读写 255
11.5.1 fgetc函数、fputc函数和feof函数 256
11.5.2 fgets函数和fputs函数 262
11.5.3 fscanf函数和fprintf函数 264
11.5.4 fread函数和fwrite函数 266
11.5.5 getw函数和putw函数 268
11.6 文件的随机读写 269
11.6.1 文件读写位置指针的定位 270
11.6.2 文件的随机读写 271
11.7 文件的出错检测 273
11.8 输入输出重定向 275
11.9 通过命令行参数指定待读写的文件名 276
习题11 277
附录A ASCII码表 279
附录B 常用Turbo C库函数 280
参考文献 285