第1章 C语言概述 1
1.1 C语言的发展与特点 1
1.1.1 C语言的发展 1
1.1.2 C语言的特色 2
1.2 程序设计基础 2
1.2.1 程序设计 3
1.2.2 算法 3
1.2.3 数据结构 7
1.3 C语言程序的结构 7
1.3.1 C程序结构 7
1.3.2 C程序元素 9
1.4 C语言程序的开发与环境 10
1.4.1 C语言程序的开发 10
1.4.2 C语言程序的开发环境 12
本章小结 14
习题1 15
第2章 数据描述与基本操作 16
2.1 C语言的数据类型 16
2.2 常量与变量 17
2.2.1 常量和变量 17
2.2.2 整型数据 19
2.2.3 浮点型数据 22
2.2.4 字符型数据 23
2.2.5 变量的初始化 25
2.3 运算符与表达式 26
2.3.1 算术运算符和表达式 26
2.3.2 赋值运算符和赋值表达式 27
2.3.3 关系运算符与关系表达式 30
2.3.4 逻辑运算符与逻辑表达式 31
2.3.5 逗号运算符和逗号表达式 32
2.4 位运算 32
2.4.1 按位与运算 33
2.4.2 按位或运算 33
2.4.3 按位异或运算 34
2.4.4 求反运算 34
2.4.5 左移运算 34
2.4.6 右移运算 35
* 2.4.7 位域(位段) 36
2.5 输入和输出函数 38
2.5.1 字符型数据的输入和输出 38
2.5.2 格式输入与输出函数 40
本章小结 45
习题2 46
第3章 C语言的控制结构 48
3.1 结构化程序设计 48
3.1.1 结构化程序设计的特点 48
3.1.2 结构化程序设计的方法 49
3.1.3 结构化程序设计的步骤 49
3.2 顺序结构程序设计 50
3.2.1 顺序结构程序特点 50
3.2.2 C语句详解 51
3.3 选择结构程序设计 56
3.3.1 if语句及实现选择结构 56
3.3.2 switch语句及实现多分支选择结构 62
3.3.3 条件运算符和表达式 65
3.4 循环结构程序设计 66
3.4.1 while语句 66
3.4.2 do-while语句 68
3.4.3 for语句 69
3.4.4 多重循环 72
3.4.5 几种循环的比较 73
3.4.6 break语句 73
3.4.7 continue语句 74
3.4.8 程序举例 74
本章小结 78
习题3 78
第4章 数组 80
4.1 一维数组的定义和引用 80
4.1.1 一维数组的定义 80
4.1.2 一维数组的初始化 81
4.1.3 一维数组元素的引用 82
4.1.4 一维数组的应用举例 82
4.2 二维数组的定义和引用 87
4.2.1 二维数组的定义 88
4.2.2 二维数组的初始化 89
4.2.3 二维数组元素的引用 90
4.2.4 二维数组元素应用举例 90
4.3 字符数组的定义和引用 93
4.3.1 字符数组的定义 93
4.3.2 字符数组的初始化 94
4.3.3 字符数组的引用 94
4.3.4 字符串与字符数组 95
4.3.5 字符数组的输入与输出 97
4.3.6 字符串处理函数 100
4.3.7 字符数组应用举例 103
本章小结 110
习题4 110
第5章 函数 112
5.1 模块化程序设计与函数 112
5.1.1 模块化程序设计原则 112
5.1.2 模块与函数 113
5.1.3 C源程序的结构 113
5.2 函数定义 114
5.2.1 标准库函数 114
5.2.2 函数定义 115
5.2.3 函数参数 117
5.3 函数调用与返回值 118
5.3.1 函数调用 118
5.3.2 函数的返回值 121
5.3.3 函数的声明 123
5.4 函数的递归调用 123
5.5 数组作为函数参数 125
5.5.1 数组元素做实参 126
5.5.2 一维数组名做函数参数 126
5.5.3 用多维数组名做函数参数 129
5.6 变量的作用域与存储属性 131
5.6.1 局部变量与全局变量 131
5.6.2 变量的存储属性 134
5.6.3 局部变量的存储类型 135
5.6.4 全局变量的存储类型 137
5.7 内部函数和外部函数 139
5.7.1 内部函数 139
5.7.2 外部函数 139
本章小结 140
习题5 140
第6章 指针 141
6.1 指针的概念 141
6.2 指针变量的定义 142
6.3 指针的运算 143
6.3.1 指针变量的赋值运算 143
6.3.2 指针变量的算术运算 145
6.4 指针与数组 148
6.4.1 指向一维数组的指针 148
6.4.2 指向二维数组的指针 151
6.4.3 指向字符串的指针 154
6.5 指针与函数 156
6.5.1 指针变量作为函数参数 156
6.5.2 数组指针作为函数参数 159
6.5.3 指针作为函数的返回值 164
6.5.4 指向函数的指针变量 165
6.6 指针数组与指向指针的指针 167
6.6.1 指向指针的指针 169
6.6.2 main函数的参数 170
本章小结 171
习题6 172
第7章 构造数据类型 173
7.1 结构体数据类型 173
7.1.1 结构体类型的定义 173
7.1.2 结构体变量的定义 174
7.1.3 结构体变量的初始化 176
7.1.4 结构体变量成员的引用 177
7.2 结构体与数组 179
7.2.1 结构体数组的定义 179
7.2.2 结构体数组的初始化 180
7.2.3 结构体数组的引用 181
7.3 结构体与指针 182
7.3.1 指向结构体变量的指针 182
7.3.2 指向结构体数组的指针 184
7.4 结构体与函数 185
7.4.1 结构体指针变量作为函数参数 185
7.4.2 结构体指针变量作为函数返回值 186
7.5 结构体与链表 187
7.5.1 动态存储分配 187
7.5.2 链表的操作 188
7.6 共用体数据类型 194
7.7 枚举类型 196
7.8 类型定义符typedef 198
本章小结 199
习题7 200
第8章 编译预处理 201
8.1 宏定义 #define 201
8.1.1 不带参数的宏定义 201
8.1.2 带参数的宏定义 204
8.2 文件包含 #include 207
8.3 条件编译 208
本章小结 209
习题8 209
第9章 文件 210
9.1 C文件概述 210
9.1.1 C文件的分类 210
9.1.2 文件指针 212
9.2 文件的打开与关闭 212
9.2.1 文件的打开 213
9.2.2 文件的关闭 214
9.3 文件的读写 215
9.3.1 字符读写函数 215
9.3.2 字符串读写函数 218
9.3.3 数据块读写函数 220
9.3.4 格式化读写函数 222
9.4 文件定位函数 222
9.4.1 重置文件指针函数 222
9.4.2 设置指针位置函数 223
9.4.3 取指针位置函数 223
9.5 文件出错检测函数 224
9.5.1 读写出错检测函数 224
9.5.2 清除文件出错标志函数 224
9.5.3 清除文件函数 225
本章小结 226
习题9 226
附录 227
附录A 常用字符与ASCII码对照表 227
附录B 关键字 228
附录C 运算符的优先级与结合性 228
附录D 常用的ANSI C标准库函数 229
参考文献 235
X
C语言程序设计
IX
目录