1 C语言概述 1
1.1 C语言出现的历史背景 1
1.2 C语言的特点 2
1.3 简单的C语言程序介绍 4
1.4 运行C程序的步骤与方法 7
1.4.1 运行C程序的步骤 7
1.4.2 上机运行C程序的方法 8
习题 12
2 程序的灵魂——算法 14
2.1 算法的概念 14
2.2 简单算法举例 15
2.3 算法的特性 19
2.4 怎样表示一个算法 20
2.4.1 用自然语言表示算法 20
2.4.2 用流程图表示算法 20
2.4.3 3种基本结构和改进的流程图 24
2.4.5 用伪代码表示算法 30
2.4.6 用计算机语言表示算法 33
2.5 结构化程序设计方法 34
习题 36
3 数据类型、运算符与表达式 37
3.1 C语言的数据类型 37
3.2 常量与变量 37
3.2.1 常量和符号常量 37
3.2.2 变量 38
3.3 整型数据 40
3.3.1 整型常量的表示方法 40
3.3.2 整型变量 40
3.3.3 整型常量的类型 44
3.4 浮点型数据 45
3.4.1 浮点型常量的表示方法 45
3.4.2 浮点型变量 45
3.4.3 浮点型常量的类型 47
3.5 字符型数据 48
3.5.1 字符常量 48
3.5.2 字符变量 49
3.5.3 字符数据在内存中的存储形式及其使用方法 50
3.5.4 字符串常量 52
3.6 变量赋初值 53
3.7 各类数值型数据间的混合运算 54
3.8 算术运算符和算术表达式 55
3.8.1 C语言运算符简介 55
3.8.2 算术运算符和算术表达式 55
3.9 赋值运算符和赋值表达式 59
3.10 逗号运算符和逗号表达式 65
习题 66
4 最简单的C程序设计——顺序程序设计 69
4.1 C语句概述 69
4.2 赋值语句 71
4.3 数据输入输出的概念及在C语言中的实现 72
4.4 字符数据的输入输出 73
4.4.1 putchar函数 73
4.4.2 getchar函数 74
4.5 格式输入与输出 74
4.5.1 printf函数 75
4.5.2 scanf函数 82
4.6 顺序结构程序设计举例 86
习题 88
5 选择结构程序设计 91
5.1 关系运算符和关系表达式 91
5.1.1 关系运算符及其优先次序 91
5.1.2 关系表达式 92
5.2 逻辑运算符和逻辑表达式 92
5.2.1 逻辑运算符及其优先次序 92
5.2.2 逻辑表达式 93
5.3 if语句 95
5.3.1 if语句的3种形式 95
5.3.2 if语句的嵌套 99
5.3.3 条件运算符 102
5.4 switch语句 104
5.5 程序举例 106
习题 111
6 循环控制 113
6.1 概述 113
6.2 goto语句以及用goto语句构成循环 113
6.3 用while语句实现循环 114
6.4 用do…while语句实现循环 115
6.5 用for语句实现循环 118
6.6 循环的嵌套 121
6.7 几种循环的比较 122
6.8 break语句和continue语句 122
6.8.1 break语句 122
6.8.2 continue语句 123
6.9 程序举例 124
习题 129
7 数组 131
7.1 一维数组的定义和引用 131
7.1.1 一维数组的定义 131
7.1.2 一维数组元素的引用 132
7.1.3 一维数组的初始化 132
7.1.4 一维数组程序举例 133
7.2 二维数组的定义和引用 135
7.2.1 二维数组的定义 135
7.2.2 二维数组的引用 136
7.2.3 二维数组的初始化 137
7.2.4 二维数组程序举例 138
7.3 字符数组 140
7.3.1 字符数组的定义 140
7.3.2 字符数组的初始化 140
7.3.3 字符数组的引用 141
7.3.4 字符串和字符串结束标志 142
7.3.5 字符数组的输入输出 144
7.3.6 字符串处理函数 146
7.3.7 字符数组应用举例 150
习题 152
8 函数 155
8.1 概述 155
8.2 函数定义的一般形式 156
8.2.1 无参函数定义的一般形式 156
8.2.2 有参函数定义的一般形式 157
8.2.3 空函数 157
8.3 函数参数和函数的值 158
8.3.1 形式参数和实际参数 158
8.3.2 函数的返回值 160
8.4 函数的调用 161
8.4.1 函数调用的一般形式 161
8.4.2 函数调用的方式 162
8.4.3 对被调用函数的声明和函数原型 163
8.5 函数的嵌套调用 167
8.6 函数的递归调用 171
8.7 数组作为函数参数 177
8.7.1 数组元素作函数实参 178
8.7.2 数组名作函数参数 179
8.7.3 多维数组名作函数参数 182
8.8 局部变量和全局变量 184
8.8.1 局部变量 184
8.8.2 全局变量 185
8.9 变量的存储类别 188
8.9.1 动态存储方式与静态存储方式 188
8.9.2 auto变量 189
8.9.3 用static声明局部变量 189
8.9.4 register变量 191
8.9.5 用extern声明外部变量 193
8.9.6 用static声明外部变量 195
8.9.7 关于变量的声明和定义 196
8.9.8 存储类别小结 197
8.10 内部函数和外部函数 199
8.10.1 内部函数 199
8.10.2 外部函数 199
习题 202
9 预处理命令 204
9.1 宏定义 204
9.1.1 不带参数的宏定义 204
9.1.2 带参数的宏定义 207
9.2 “文件包含”处理 211
9.3 条件编译 214
习题 217
10 指针 219
10.1 地址和指针的概念 219
10.2 变量的指针和指向变量的指针变量 221
10.2.1 定义一个指针变量 221
10.2.2 指针变量的引用 222
10.2.3 指针变量作为函数参数 225
10.3 数组与指针 229
10.3.1 指向数组元素的指针 229
10.3.2 通过指针引用数组元素 230
10.3.3 用数组名作函数参数 235
10.3.4 多维数组与指针 242
10.4 字符串与指针 251
10.4.1 字符串的表示形式 251
10.4.2 字符指针作函数参数 254
10.4.3 对使用字符指针变量和字符数组的讨论 257
10.5 指向函数的指针 260
10.5.1 用函数指针变量调用函数 260
10.5.2 用指向函数的指针作函数参数 262
10.6 返回指针值的函数 265
10.7 指针数组和指向指针的指针 268
10.7.1 指针数组的概念 268
10.7.2 指向指针的指针 271
10.7.3 指针数组作main函数的形参 273
10.8 有关指针的数据类型和指针运算的小结 275
10.8.1 有关指针的数据类型的小结 276
10.8.2 指针运算小结 276
10.8.3 void指针类型 277
习题 278
11 结构体与共用体 281
11.1 概述 281
11.2 定义结构体类型变量的方法 282
11.3 结构体变量的引用 284
11.4 结构体变量的初始化 285
11.5 结构体数组 286
11.5.1 定义结构体数组 286
11.5.2 结构体数组的初始化 287
11.5.3 结构体数组应用举例 287
11.6 指向结构体类型数据的指针 289
11.6.1 指向结构体变量的指针 289
11.6.2 指向结构体数组的指针 290
11.6.3 用结构体变量和指向结构体的指针作函数参数 292
11.7 用指针处理链表 294
11.7.1 链表概述 294
11.7.2 简单链表 295
11.7.3 处理动态链表所需的函数 296
11.7.4 建立动态链表 297
11.7.5 输出链表 300
11.7.6 对链表的删除操作 301
11.7.7 对链表的插入操作 303
11.7.8 对链表的综合操作 305
11.8 共用体 308
11.8.1 共用体的概念 308
11.8.2 共用体变量的引用方式 309
11.8.3 共用体类型数据的特点 310
11.9 枚举类型 312
11.10 用typedef定义类型 315
习题 318
12 位运算 319
12.1 位运算符和位运算 319
12.1.1 “按位与”运算符(&) 319
12.1.2 “按位或”运算符(|) 320
12.1.3 “异或”运算符(∧) 321
12.1.4 “取反”运算符(~) 322
12.1.5 左移运算符(<<) 323
12.1.6 右移运算符(>>) 323
12.1.7 位运算赋值运算符 324
12.1.8 不同长度的数据进行位运算 324
12.2 位运算举例 324
12.3 位段 326
习题 329
13 文件 330
13.1 C文件概述 330
13.2 文件类型指针 331
13.3 文件的打开与关闭 332
13.3.1 文件的打开(fopen函数) 332
13.3.2 文件的关闭(fclose函数) 334
13.4 文件的读写 334
13.4.1 fputc函数和fgetc函数(putc函数和getc函数) 335
13.4.2 freacd函数和fwrite函数 339
13.4.3 fprintf函数和fscanf函数 342
13.4.4 其他读写函数 343
13.5 文件的定位 344
13.5.1 rewind函数 344
13.5.2 fseek函数和随机读写 345
13.5.3 ftell函数 346
13.6 出错的检测 346
13.6.1 ferror函数 347
13.6.2 clearerr函数 347
13.7 文件输入输出小结 347
习题 348
14 常见错误和程序调试 349
14.1 常见错误分析 349
14.2 程序调试 361
附录A 常用字符与ASCII代码对照表 364
附录B C语言中的关键字 365
附录C 运算符和结合性 365
附录D C语言常用语法提要 367
附录E C库函数 371
参考文献 378