第1章 概述 1
1.1 C语言的发展 1
1.2 C语言的特点 2
1.3 编制简单的C语言程序 3
1.3.1 简单的程序设计 3
1.3.2 C程序的编辑、编译和连接 6
1.4 VC++ 6.0简介 6
1.4.1 VC++ 6.0简介 6
1.4.2 运行C程序的方法步骤 11
1.5 算法 17
1.5.1 算法的概念 18
1.5.2 算法的特性与设计要求 18
1.5.3 算法的表示和举例 19
本章小结 26
习题 27
第2章 C程序设计的基本知识 29
2.1 C语言的数据类型 29
2.2 标识符、常量与变量 30
2.2.1 标识符 30
2.2.2 常量和符号常量 31
2.2.3 变量 32
2.3 整型数据 33
2.3.1 整型常量 33
2.3.2 整型变量 33
2.3.3 整型数据的分类与存储形式 34
2.4 实型数据 35
2.4.1 实型常量 35
2.4.2 实型变量 36
2.5 字符型数据 37
2.5.1 字符型常量 37
2.5.2 字符型变量 38
2.5.3 字符串常量 39
2.6 算术运算符和算术表达式 39
2.6.1 基本的算术运算符 40
2.6.2 运算符的优先级、结合性和算术表达式 40
2.6.3 强制性类型转换表达式 41
2.7 赋值运算符和赋值表达式 41
2.7.1 赋值运算符和赋值表达式 41
2.7.2 赋值运算中的类型转换 43
2.8 逗号运算符和逗号表达式 44
2.9 自加、自减运算符 44
本章小结 46
习题 46
第3章 顺序结构 48
3.1 C语句 48
3.1.1 C语句概述 48
3.1.2 赋值语句 50
3.1.3 复合语句和空语句 50
3.2 格式输入/输出函数 52
3.2.1 格式输入函数 52
3.2.2 格式输出函数 56
3.3 字符数据的输入/输出函数 63
3.3.1 字符输入函数 63
3.3.2 字符输出函数 64
3.4 程序举例 65
本章小结 67
习题 67
第4章 选择结构 72
4.1 关系运算与逻辑运算 72
4.1.1 C语言的逻辑值 72
4.1.2 关系运算符和关系表达式 72
4.1.3 逻辑运算符和逻辑表达式 73
4.1.4 运算符的优先级 74
4.2 if语句 74
4.2.1 if语句的基本形式 74
4.2.2 嵌套的if语句 80
4.3 条件表达式构成的选择结构 88
4.4 switch语句 88
4.4.1 switch语句的基本形式 88
4.4.2 switch语句的执行过程 89
4.4.3 用switch和break语句实现选择结构 91
4.5 程序举例 92
本章小结 95
习题 95
第5章 循环结构 99
5.1 while循环结构 99
5.1.1 while循环的一般形式 100
5.1.2 while循环的执行过程 101
5.2 do-while循环结构 104
5.2.1 do-while循环的一般形式 104
5.2.2 do-while循环的执行过程 105
5.3 for循环结构 105
5.3.1 for循环的一般形式 105
5.3.2 for循环的执行过程 106
5.3.3 for语句的说明 106
5.4 用语句标号和goto语句构成的循环结构 107
5.4.1 语句标号 107
5.4.2 goto语句 107
5.5 循环的嵌套 108
5.6 break和continue语句 113
5.6.1 break语句 113
5.6.2 continue语句 113
5.7 程序举例 114
本章小结 117
习题 118
第6章 函数 122
6.1 概述 122
6.2 函数定义和返回值 123
6.2.1 函数的说明 123
6.2.2 函数的定义 123
6.2.3 有参函数、无参函数的定义 124
6.2.4 空函数 126
6.2.5 函数的返回值 126
6.3 函数的调用 126
6.3.1 函数的简单调用 126
6.3.2 调用方式 127
6.3.3 函数间的参数传递 129
6.3.4 参数传递举例 130
6.4 函数的嵌套调用 131
6.5 函数的递归调用 132
6.6 局部变量和全局变量 136
6.6.1 局部变量 136
6.6.2 全局变量 137
6.7 变量的存储类别 140
6.7.1 动态存储与静态存储的存储方式 140
6.7.2 auto变量 141
6.7.3 用static声明的局部变量 142
6.7.4 register变量 143
6.7.5 用extern声明外部变量 144
6.8 内部函数和外部函数 145
6.8.1 内部函数 145
6.8.2 外部函数 145
本章小结 146
习题 147
第7章 地址和指针 152
7.1 地址和指针的概念 152
7.2 指针变量 153
7.2.1 指针变量的定义 153
7.2.2 指针变量的引用 153
7.3 指向函数的指针 156
7.3.1 用函数指针变量调用函数 156
7.3.2 用指向函数的指针作函数参数 158
7.4 对指针变量的操作 159
7.4.1 通过指针来引用一个存储单元 159
7.4.2 指针的移动和比较 161
7.5 函数之间地址值的传递 162
7.5.1 形参为指针变量时参数和形参之间的数据传递 162
7.5.2 通过传送地址值在被调用函数中直接改变调用函数中的变量的值 164
7.5.3 函数返回地址值 166
7.6 通过实参向函数传递函数名或指向函数的指针变量 166
7.7 传给main()函数的参数 168
本章小结 169
习题 170
第8章 数组 174
8.1 一维数组的定义和一维数组元素的引用 174
8.1.1 一维数组的定义 174
8.1.2 一维数组的初始化 175
8.1.3 一维数组的引用 177
8.1.4 一维数组的定义和元素引用举例 178
8.2 一维数组和指针 179
8.2.1 一维数组和数组元素的地址 179
8.2.2 通过数组的首地址引用数组元素 179
8.2.3 通过指针引用一维数组元素 180
8.2.4 用带下标的指针变量引用一维数组元素 182
8.3 函数之间对一维数组和数组元素的引用 182
8.3.1 数组元素作实参 182
8.3.2 数组名作实参 183
8.3.3 数组元素的地址作实参 188
8.3.4 函数的指针形参和函数体中的数组区别 188
8.4 一维数组应用举例 189
8.5 二维数组的定义和二维数组元素的引用 191
8.5.1 二维数组的定义 191
8.5.2 二维数组的初始化 192
8.5.3 二维数组元素的引用 195
8.6 二维数组和指针 196
8.6.1 二维数组和数组元素的地址 196
8.6.2 通过地址引用二维数组元素 197
8.6.3 通过建立一个指针数组引用二维数组元素 198
8.6.4 通过建立一个行指针引用二维数组元素 199
8.7 二组数组名和指针数组作实参 200
8.7.1 二维数组名作实参时实参和形参之间的数据传递 200
8.7.2 指针数组作实参时实参和形参之间的数据传递 201
8.8 二维数组程序举例 203
8.9 字符数组 206
8.9.1 字符数组的定义 206
8.9.2 字符数组的初始化 206
8.9.3 字符数组的引用 208
8.9.4 字符串和字符串结束标志 209
8.9.5 字符数组的输入和输出 209
8.9.6 使指针指向一个字符串 212
8.9.7 字符串处理函数 212
本章小结 215
习题 216
第9章 编译预处理和动态存储分配 220
9.1 编译预处理 220
9.1.1 不带参数宏定义 221
9.1.2 带参数宏定义 222
9.1.3 文件包含 225
9.1.4 条件编译 226
9.2 动态存储分配 229
本章小结 231
习题 232
第10章 结构体、共用体和枚举 235
10.1 概述 235
10.1.1 结构体类型的定义及引用 236
10.1.2 结构体变量的初始化 240
10.1.3 结构体变量的输入和输出 241
10.2 结构体数组的定义及初始化 241
10.2.1 结构体数组的定义 241
10.2.2 结构体数组的初始化 243
10.2.3 结构体数组的应用举例 243
10.3 指向结构体类型变量的指针 245
10.3.1 指向结构体变量的指针 245
10.3.2 指向结构体数组的指针 248
10.3.3 用结构体变量和指向结构体的指针作函数参数 249
10.4 用指针处理链表 255
10.4.1 链表的概述 255
10.4.2 单链表 255
10.4.3 建立动态链表 256
10.4.4 输出链表 259
10.4.5 对链表的插入操作 260
10.4.6 对链表的删除操作 261
10.4.7 链表的综合操作 262
10.5 共用体 264
10.5.1 共用体类型的说明和变量的定义 265
10.5.2 共用体变量的引用 269
10.5.3 共用体变量的引用方式 271
10.6 枚举类型 272
10.6.1 枚举类型的定义 272
10.6.2 枚举变量的说明 273
10.6.3 枚举类型变量的赋值和使用 273
10.7 用typedef定义类型 276
10.7.1 用typedef定义类型 276
10.7.2 typedef使用举例 279
本章小结 280
习题 281
第11章 位运算 287
11.1 位运算的基本概念 287
11.2 位运算符的运算功能举例 288
11.3 位段 293
11.3.1 位域的定义和位域变量的说明 293
11.3.2 位运算应用举例 294
本章小结 298
习题 298
第12章 文件 301
12.1 C语言文件的概念 301
12.1.1 文件的概念与文件结构 301
12.1.2 文件系统的缓冲性 302
12.1.3 文件访问的操作 302
12.2 文件访问的步骤 308
12.2.1 文件类型指针 308
12.2.2 文件访问的方法 309
12.3 文件的打开与关闭 310
12.4 标准文件的读写 312
12.5 非标准文件的读写 325
12.6 文件定位函数 325
12.6.1 fseek()函数 326
12.6.2 ftell()函数 327
12.6.3 rewind()函数 328
12.7 出错的检测函数 329
12.7.1 ferror()函数 329
12.7.2 clearerr()函数 330
12.8 判断文件结束函数 331
12.8.1 feof()函数 331
12.8.2 remove()函数 331
本章小结 332
习题 332
第13章 程序的综合设计 335
13.1 程序举例 335
13.1.1 数组应用举例 335
13.1.2 指针应用举例 336
13.1.3 结构体应用举例 337
13.1.4 共用体应用举例 338
13.1.5 位运算应用举例 338
13.2 综合设计 338
本章小结 349
习题 349
附录A 常用字符与ASCII对照表 351
附录B 常用头文件和函数分类详解 352
附录C C语言库文件 357
附录D C语言常见编译错误信息 359
附录E 关键字列表 370
参考文献 372