第1章 C语言概述 1
1.1 C语言的发展与特点 1
1.1.1 C语言的发展 1
1.1.2 C语言的特点 2
1.2 程序设计基础 3
1.2.1 程序 3
1.2.2 程序设计 3
1.2.3 算法 4
1.2.4 数据结构 9
1.3 C语言程序的结构 9
1.4 C语言程序的开发与环境 11
1.4.1 C语言程序的开发 11
1.4.2 C语言程序的开发环境 12
本章小结 14
习题1 15
第2章 数据描述与基本操作 16
2.1 C语言的数据类型 16
2.2 常量与变量 17
2.2.1 常量和变量的概念 17
2.2.2 整型数据 18
2.2.3 浮点型数据 22
2.2.4 字符型数据 24
2.2.5 变量的初始化 26
2.3 运算符与表达式 27
2.3.1 算术运算符和算术表达式 27
2.3.2 赋值运算符和赋值表达式 29
2.3.3 关系运算符与关系表达式 31
2.3.4 逻辑运算符与逻辑表达式 32
2.3.5 逗号运算符和逗号表达式 34
2.4 位运算 34
2.4.1 按位与运算 34
2.4.2 按位或运算 35
2.4.3 按位异或运算 35
2.4.4 求反运算 36
2.4.5 左移运算 36
2.4.6 右移运算 36
2.4.7 位域(位段) 37
2.5 输入和输出函数 39
2.5.1 字符型数据的输入和输出 40
2.5.2 格式输入与输出函数 41
本章小结 47
习题2 47
第3章 C语言的控制结构 49
3.1 结构化程序设计 49
3.1.1 程序的基本结构 49
3.1.2 结构化程序设计的特点 50
3.1.3 结构化程序设计的方法 50
3.1.4 结构化程序设计的步骤 51
3.2 顺序结构程序设计 52
3.3 选择结构程序设计 56
3.3.1 if语句 56
3.3.2 多分支(多情况)选择结构 61
3.3.3 条件运算符和条件表达式 63
3.4 循环结构程序设计 64
3.4.1 while语句 65
3.4.2 do-while语句 67
3.4.3 for语句 68
3.4.4 多重循环 71
3.4.5 几种循环的比较 71
3.4.6 break语句 72
3.4.7 continue语句 72
3.4.8 程序举例 73
本章小结 76
习题3 76
第4章 数组 78
4.1 一维数组的定义和引用 78
4.1.1 一维数组的定义 78
4.1.2 一维数组的初始化 79
4.1.3 一维数组元素的引用 80
4.1.4 一维数组的应用举例 81
4.2 二维数组的定义和引用 86
4.2.1 二维数组的定义 86
4.2.2 二维数组的初始化 87
4.2.3 二维数组元素的引用 88
4.2.4 二维数组的应用举例 89
4.3 字符数组的定义和引用 91
4.3.1 字符数组的定义 91
4.3.2 字符数组的初始化 92
4.3.3 字符数组元素的引用 92
4.3.4 字符串与字符数组 94
4.3.5 字符数组的输入与输出 95
4.3.6 字符串处理函数 98
4.3.7 字符数组的应用举例 101
本章小结 107
习题4 108
第5章 函数 109
5.1 模块化程序设计与函数 109
5.1.1 模块化程序设计原则 109
5.1.2 模块与函数 110
5.1.3 C源程序的结构 110
5.2 函数的定义 111
5.2.1 标准库函数 111
5.2.2 函数的定义形式 112
5.2.3 函数的参数 113
5.3 函数的调用与返回值 114
5.3.1 函数的调用 115
5.3.2 函数的返回值 118
5.3.3 函数的声明 119
5.4 函数的递归调用 120
5.5 数组作为函数参数 122
5.5.1 数组元素作实参 122
5.5.2 一维数组名作函数参数 123
5.5.3 用多维数组名作函数参数 125
5.6 变量的作用域与存储属性 126
5.6.1 局部变量与全局变量 127
5.6.2 变量的存储属性 130
5.6.3 局部变量的存储类型 130
5.6.4 全局变量的存储类型 133
5.7 内部函数和外部函数 134
5.7.1 内部函数 134
5.7.2 外部函数 135
本章小结 135
习题5 135
第6章 指针 137
6.1 指针的概念 137
6.2 指针变量的定义 138
6.3 指针的运算 139
6.3.1 指针变量的赋值运算 139
6.3.2 指针变量的算术运算 141
6.4 指针与数组 144
6.4.1 指向一维数组的指针 144
6.4.2 指向二维数组的指针 147
6.4.3 指向字符串的指针 150
6.5 指针与函数 152
6.5.1 指针变量作为函数参数 152
6.5.2 数组指针作为函数参数 154
6.5.3 指针作为函数的返回值 158
6.5.4 指向函数的指针变量 159
6.6 指针数组与指向指针的指针 161
6.6.1 指向指针的指针 163
6.6.2 main函数的参数 163
本章小结 164
习题6 165
第7章 构造数据类型 166
7.1 结构体数据类型 166
7.1.1 结构体类型的定义 166
7.1.2 结构体类型变量的定义 167
7.1.3 结构体变量的初始化 169
7.1.4 结构体变量成员的引用 170
7.2 结构体数组 172
7.2.1 结构体数组的定义 172
7.2.2 结构体数组的初始化 172
7.2.3 结构体数组的引用 173
7.3 结构体指针 174
7.3.1 指向结构体变量的指针 174
7.3.2 指向结构体数组的指针 176
7.3.3 结构体指针变量作为函数参数 177
7.3.4 结构体指针变量作为函数返回值 178
7.4 链表 179
7.4.1 动态存储分配 179
7.4.2 链表的操作 180
7.5 共用体数据类型 186
7.6 枚举类型 188
7.7 类型定义符typedef 189
本章小结 190
习题7 191
第8章 编译预处理 192
8.1 宏定义 192
8.1.1 不带参数的宏定义 192
8.1.2 带参数的宏定义 195
8.2 文件包含 198
8.3 条件编译 199
本章小结 200
习题8 201
第9章 文件 202
9.1 C文件概述 202
9.1.1 C文件的分类 202
9.1.2 文件指针 204
9.2 文件的打开与关闭 204
9.2.1 文件的打开 205
9.2.2 文件的关闭 206
9.3 文件的读写 207
9.3.1 字符读写函数 207
9.3.2 字符串读写函数 210
9.3.3 数据块读写函数 211
9.3.4 格式化读写函数 214
9.4 文件定位函数 214
9.4.1 重置文件指针函数 214
9.4.2 设置指针位置函数 215
9.4.3 取指针位置函数 215
9.5 文件出错检测函数 216
9.5.1 读写出错检测函数 216
9.5.2 清除文件出错标志函数 216
9.5.3 清除文件函数 216
本章小结 217
习题9 218
参考文献 219