第1章 C语言概述 1
1.1 什么是C语言 1
1.2 C语言的发展史 2
1.3 Visual C++6.0集成环境 3
1.4 第一个C语言程序 15
1.5 书写程序的规则 17
1.6 习题 19
第2章 数据类型、运算符与表达式 20
2.1 C语言的数据类型 20
2.2 常量和变量 21
2.2.1 标识符 21
2.2.2 常量 22
2.2.3 变量 23
2.2.4 整型数据 27
2.2.5 实型数据 30
2.2.6 字符型数据 32
2.2.7 字符串常量 35
2.2.8 不同数据类型间的转换 36
2.3 运算符和表达式 36
2.3.1 算术运算 38
2.3.2 赋值运算 39
2.3.3 类型转换运算 43
2.3.4 自增、自减运算 44
2.3.5 关系运算 45
2.3.6 逻辑运算 46
2.3.7 条件运算 48
2.3.8 逗号运算 49
2.4 习题 49
第3章 三种基本控制结构 51
3.1 算法 51
3.1.1 算法的概念 51
3.1.2 算法的表示方法 52
3.2 C语句 54
3.3 数据输入与输出 55
3.3.1 格式输入输出函数 55
3.3.2 字符输入输出函数 65
3.4 结构化的程序设计方法 66
3.5 顺序结构程序设计 66
3.6 选择结构程序设计 68
3.6.1 单分支选择结构 68
3.6.2 多分支选择结构 72
3.6.3 嵌套选择结构 78
3.7 循环结构程序设计 84
3.7.1 while结构 84
3.7.2 do while结构 86
3.7.3 for结构 90
3.7.4 循环嵌套结构 93
3.7.5 有关循环语句的建议 97
3.8 break和continue辅助控制语句 98
3.8.1 break语句 98
3.8.2 continue语句 101
3.9 习题 102
第4章 数组 104
4.1 一维数组 105
4.1.1 一维数组的定义 105
4.1.2 一维数组元素的引用 106
4.1.3 一维数组的初始化 109
4.2 二维数组 120
4.2.1 二维数组的定义 120
4.2.2 二维数组元素的引用 121
4.2.3 二维数组的初始化 122
4.3 字符数组 126
4.3.1 字符串 126
4.3.2 字符数组的输入输出 127
4.3.3 字符串处理函数 132
4.4 习题 142
第5章 函数 143
5.1 函数的定义 144
5.2 函数的调用 146
5.2.1 函数调用的格式 146
5.2.2 使用函数调用的形式 147
5.3 函数的声明 150
5.3.1 函数声明的意义 150
5.3.2 函数声明的格式 150
5.4 函数参数的传值 151
5.4.1 单向值传递 151
5.4.2 双向地址传递 153
5.5 嵌套调用和递归调用 157
5.5.1 嵌套调用 157
5.5.2 递归调用 158
5.6 变量的使用范围和存储类别 161
5.6.1 局部变量与全局变量 161
5.6.2 变量的存储类别 164
5.7 多文件程序 169
5.7.1 C源文件的划分 169
5.7.2 C源文件的格式 169
5.8 用带参数的宏代替公式型函数 174
5.9 习题 177
第6章 指针 179
6.1 指针的概念 179
6.1.1 计算机中的内存 179
6.1.2 指针变量就是存储地址的变量 180
6.2 指向变量的指针 180
6.2.1 指针变量的定义 180
6.2.2 指针变量的初始化和赋值 180
6.2.3 使用指针变量 181
6.3 指向数组的指针 183
6.3.1 指针和数组名 183
6.3.2 指针的赋值运算 184
6.3.3 指针的算术和关系运算 184
6.3.4 利用指针引用数组元素 188
6.3.5 指针作函数的参数 190
6.4 指向字符串的指针 203
6.4.1 字符指针和字符数组 203
6.4.2 利用字符指针处理字符串 207
6.5 指针数组和指向指针的指针 212
6.5.1 指针数组 212
6.5.2 指向指针的指针 214
6.5.3 数组指针 216
6.6 函数指针与指针函数 217
6.6.1 函数指针 217
6.6.2 指针函数 219
6.7 习题 221
第7章 构造数据类型 223
7.1 概述 223
7.2 结构体 223
7.2.1 结构体类型的定义 224
7.2.2 结构体类型变量的定义及初始化 225
7.2.3 引用结构体类型变量的成员 231
7.2.4 结构体数组 235
7.2.5 指向结构体类型数据的指针 237
7.2.6 结构体在函数间的传递 241
7.3 共用体 244
7.3.1 共用体类型及变量的定义 244
7.3.2 共用体变量的引用 247
7.4 枚举类型 249
7.4.1 枚举类型及变量的定义 250
7.4.2 枚举类型的引用 251
7.5 用typedef定义类型 254
7.6 习题 255
第8章 动态分配及撤销内存 256
8.1 动态分配与撤销内存的概念 256
8.2 malloc与free函数 257
8.3 calloc与free函数 259
8.4 free函数与指针 261
8.5 习题 263
第9章 链表 264
9.1 链表的结构 264
9.2 链表的创建及遍历输出 265
9.3 链表的插入 269
9.4 链表的删除 276
9.5 链表的销毁 284
9.6 循环链表 287
9.7 双链表 287
9.8 栈和队列 287
9.9 习题 287
第10章 位运算 289
10.1 位运算的概念 289
10.2 位运算符与位运算 290
10.2.1 “按位与”运算符(&) 290
10.2.2 “按位或”运算符(|) 291
10.2.3 “按位异或”运算符(^) 292
10.2.4 “取反”运算符(~) 294
10.2.5 “左移”运算符(<<) 294
10.2.6 “右移”运算符(>>) 295
10.3 位运算举例 297
10.4 位段 301
10.4.1 位段的概念 301
10.4.2 位段的声明和位段变量的定义 301
10.4.3 位段的使用 303
10.5 习题 304
第11章 文件 305
11.1 文件的概念 305
11.2 文件类型指针 309
11.3 文件的打开与关闭 309
11.3.1 文件的打开 309
11.3.2 文件的关闭 310
11.4 文件的读写操作 311
11.4.1 文件读函数 311
11.4.2 文件写函数 314
11.5 文件检测函数 318
11.6 文件的定位 319
11.7 习题 321
第12章 C程序的常见错误 322
附录A ASCII码表 331
附录B C语言常用库函数 335
参考文献 341