目 录
第1章 C语言概述 1
1.1 程序设计语言及其发展 1
1.1.1
机器语言 1
1.1.2
汇编语言 2
1.1.3
高级语言 2
1.2
C语言的历史 3
1.3
C语言的标准 4
1.4
C语言的程序结构 4
1.4.1
简单的C语言程序剖析 4
1.4.2
C语言程序的基本结构 8
1.5
C语言程序的运行 8
1.5.1
运行C语言程序的步骤 8
1.5.2
集成开发环境 9
1.6 本章小结 10
1.7 习题 10
第2章 C语言程序设计基础 11
2.1 常量 11
2.1.1
整型常量 11
2.1.2
浮点型常量 12
2.1.3
单字符常量 12
2.1.4
字符串常量 13
2.1.5
符号常量 13
2.2 变量 14
2.2.1
变量名 15
2.2.2
变量的类型 15
2.2.3
变量的定义及操作 18
2.3 运算符与表达式 19
2.3.1
算术运算符和算术表达式 20
2.3.2
关系运算符和关系表达式 21
2.3.3
逻辑运算符和逻辑表达式 22
2.3.4
赋值运算符和赋值表达式 23
2.3.5
自增、自减运算符 24
2.3.6
条件运算符 25
2.3.7
逗号运算符和逗号表达式 25
2.4 运算符的优先级与结合性
26
2.4.1
优先级 26
2.4.2
结合性 26
2.5 类型转换 27
2.5.1
隐式类型转换 27
2.5.2
显式类型转换 29
2.6 本章小结 29
2.7 习题 29
第3章 输入与输出 31
3.1 读入一个字符 31
3.2 输出一个字符 32
3.3 格式化输入 33
3.3.1
整数输入 34
3.3.2
实数输入 35
3.3.3
单个字符输入 35
3.3.4
字符串输入 36
3.4 格式化输出 37
3.5 程序举例 39
3.6 本章小结 41
3.7 习题 42
第4章 选择结构程序设计 45
4.1
if语句 45
4.1.1
简单if语句 45
4.1.2
if...else语句 47
4.1.3
嵌套if...else语句 48
4.1.4
阶梯式if...else语句 49
4.2
switch语句 50
4.3 本章小结 53
4.4 习题 53
第5章 循环结构程序设计 56
5.1
goto语句 56
5.2
while语句 58
5.3
do...while语句 60
5.4
for语句 61
5.5
break语句与continue语句 63
5.5.1
break语句 63
5.5.2
continue语句 64
5.6 循环的嵌套 65
5.7 本章小结 66
5.8 习题 67
第6章 数组 70
6.1 一维数组 70
6.1.1
一维数组的定义 70
6.1.2
一维数组的引用 71
6.1.3
一维数组的初始化与赋值 72
6.1.4
一维数组的应用举例 73
6.2 二维数组 74
6.2.1
二维数组的定义 75
6.2.2
二维数组的引用 75
6.2.3
二维数组的初始化与赋值 76
6.3 字符数组与字符串 77
6.3.1
字符数组的定义 78
6.3.2
字符数组的初始化与赋值 78
6.3.3
字符串和字符数组 79
6.3.4
字符数组的输入/输出 80
6.3.5
字符串处理函数 81
6.4 本章小结 84
6.5 习题 84
第7章 函数 88
7.1 函数概述 88
7.2 函数声明 91
7.3 函数定义和函数调用 92
7.3.1
函数定义 92
7.3.2
函数调用 93
7.3.3
参数传递 94
7.4 程序举例 98
7.5 函数的嵌套调用和递归调用
99
7.5.1
函数的嵌套调用 100
7.5.2
函数的递归调用 101
7.6 变量的作用域 103
7.6.1
局部变量 104
7.6.2
全局变量 105
7.7 变量的存储类别 107
7.8 本章小结 109
7.9 习题 110
第8章 指针 113
8.1 指针概述 113
8.2 访问变量的地址 114
8.3 指针变量的定义与运算
115
8.3.1
指针变量的定义 115
8.3.2
指针变量的初始化与赋值 116
8.3.3
通过指针访问变量 116
8.3.4
指针的运算 120
8.4 指针与一维数组 120
8.5 指向指针的指针与指针
数组 124
8.5.1
指向指针的指针 124
8.5.2
指针数组 126
8.6 指针与二维数组 129
8.6.1
指向二维数组元素的指针 129
8.6.2
二维数组名与指针 130
8.6.3
二维数组与指向一维数组的
指针变量 133
8.7 指针与字符串 134
8.8 指针兼容性 137
8.8.1
指针大小兼容 137
8.8.2
void指针 138
8.8.3
指针转换 139
8.9 指针与函数 140
8.9.1
指针作为实际参数
140
8.9.2
指针型函数 144
8.9.3
函数指针变量 145
8.10
main函数的参数 146
8.11
本章小结 147
8.12
习题 148
第9章 编译预处理 153
9.1 概述 153
9.1.1
预处理器的工作方式 153
9.1.2
编译预处理命令 154
9.2 宏定义 155
9.2.1
不带参数的宏定义 155
9.2.2
带参数的宏定义 156
9.3 文件包含 157
9.4 条件编译 159
9.5 本章小结 161
9.6 习题 161
第10章 结构体、共用体与
枚举类型 164
10.1
结构体 164
10.1.1
定义结构体类型 164
10.1.2
定义结构体变量 166
10.1.3
访问结构体成员 168
10.1.4
结构体变量的初始化 170
10.1.5
结构体嵌套 171
10.1.6
结构体数组 172
10.1.7
结构体指针变量 173
10.1.8
结构体与函数 176
10.2
共用体 179
10.2.1
定义共用体类型 179
10.2.2
定义共用体变量 180
10.2.3
访问共用体成员 181
10.2.4
共用体变量的赋值 181
10.2.5
共用体变量的初始化 182
10.2.6
共用体的应用 182
10.3
枚举类型 183
10.3.1
定义枚举类型 183
10.3.2
定义枚举类型变量 183
10.4
用typedef定义类型 185
10.5
本章小结 186
10.6
习题 187
第11章 文件管理 190
11.1
概述 190
11.2
文件的打开与关闭 191
11.2.1
文件指针 191
11.2.2
文本文件与二进制文件 192
11.2.3
文件的打开 192
11.2.4
文件的关闭 194
11.3
文件的读/写 194
11.3.1
fputc函数和fgetc函数 194
11.3.2
fread函数和fwrite函数 197
11.3.3
fscanf函数和fprintf
函数 201
11.3.4
fgets函数和fputs函数 203
11.4
文件的定位 204
11.5
本章小结 206
11.6
习题 206
第12章 C语言高级程序设计 209
12.1
位运算 209
12.1.1
位运算符 210
12.1.2
按位与运算 210
12.1.3
按位或运算 211
12.1.4
按位异或运算 211
12.1.5
按位取反运算 212
12.1.6
左移运算符(
12.1.7
右移运算符(>>) 213
12.1.8
程序举例 213
12.2
动态存储分配 214
12.2.1
malloc函数 215
12.2.2
calloc函数 217
12.2.3
realloc函数 218
12.2.4
free函数 219
12.3
链表 219
12.3.1
链表概述 219
12.3.2
单向链表的构造 222
12.3.3
单向链表的遍历 225
12.3.4
查找数据项 227
12.3.5
插入节点 228
12.3.6
删除节点 230
12.3.7
清空链表 231
12.4
本章小结 239
12.5
习题 239
第13章 C语言程序设计实验指导
241
实验一 C语言程序开发环境和
C语言程序基本结构 241
实验二 C语言程序设计基础 252
实验三 输入与输出 257
实验四 选择结构程序设计 264
实验五 循环结构程序设计 274
实验六 数组 281
实验七 函数 288
实验八 指针 296
实验九 编译预处理 306
实验十 结构体、共用体与枚举
类型 312
实验十一 文件管理 319
实验十二 C语言高级程序设计 324
附录1 部分ASCII码表 331
附录2 C语言的部分关键字 332
附录3 运算符的优先级和结合性
333
参考文献 334