第1章 基本概念 1
1.1 引言 1
1.2 计算机是什么 2
1.3 计算机的结构 2
1.4 批处理、多道程序设计和分时 3
1.5 个人计算、分布式计算和客户/服务器计算 3
1.6 机器语言、汇编语言和高级语言 4
1.7 C语言的历史 5
1.8 C标准库 5
1.9 其它高级语言 6
1.10 结构化程序设计 6
1.11 C环境的基本知识 6
1.12 对C语言和本书的总的说明 8
1.13 Concurrent C 9
第2章 C语言程序设计入门 16
2.1 引言 16
2.2 一个简单的C语言程序:打印一行文本 16
2.3 另一个简单的C语言程序:求两个整数的和 19
2.4 内存的概念 22
2.5 C语言中的算术运算 23
2.6 判断语句:相等测试运算符和关系运算符 25
第3章 结构化程序的开发 41
3.1 引言 41
3.2 算法 41
3.3 伪码 42
3.4 控制结构 42
3.5 if选择结构 44
3.6 if/else选择结构 45
3.7 while循环结构 48
3.8 制定算法:实例研究1 49
3.9 用自顶向下、逐步求精的方法制定算法:实例研究2 50
3.10 用自顶向下、逐步求精的方法制定算法:实例研究3 55
3.11 赋值运算符 58
3.12 自增和自减运算符 59
第4章 程序控制 78
4.1 引言 78
4.2 循环的本质 78
4.3 计数器控制的循环 78
4.4 for循环结构 80
4.5 for结构:说明和评述 82
4.6 for结构用法举例 83
4.7 switch多路选择结构 85
4.8 do/while循环结构 89
4.9 break和continue语句 91
4.10 逻辑运算符 92
4.11 容易混淆的相等测试运算符==和赋值运算符= 94
4.12 结构化程序设计小结 95
第5章 函数 111
5.1 引言 111
5.2 C语言的程序模块 111
5.3 数学库函数 112
5.4 函数 113
5.5 函数定义 113
5.6 函数原型 116
5.7 头文件 118
5.8 函数调用:传值调用和传引用调用 119
5.9 随机数的产生 119
5.10 范例:碰运气游戏 123
5.11 存储类别 125
5.12 作用域规则 127
5.13 递归 130
5.14 递归应用举例:Fibonacci数列 132
5.15 递归与迭代的比较 134
第6章 数组 156
6.1 引言 156
6.2 数组 156
6.3 数组的声明 157
6.4 数组使用举例 158
6.5 把数组传递给函数 168
6.6 数组排序 171
6.7 实例研究:用数组计算均值(mean)、中位值(median)和众数(mode) 173
6.8 数组查找 177
6.9 多维数组 181
第7章 指针 203
7.1 引言 203
7.2 指针变量的声明和初始化 203
7.3 指针运算符 204
7.4 函数的传引用调用 205
7.5 对指针使用const限定符 209
7.6 使用传引用调用的泡沫排序法 213
7.7 指针表达式和指针的算术运算 216
7.8 指针和数组的关系 218
7.9 指针数组 222
7.10 实例研究:洗牌和发牌模拟 222
7.11 指向函数的指针 226
第8章 字符和字符串 250
8.1 引言 250
8.2 字符串和字符的基本知识 250
8.3 字符处理函数库 251
8.4 字符串转换函数 256
8.5 标准输入/输出库函数 260
8.6 字符串处理库中的字符操作函数 263
8.7 字符串处理库中的比较函数 265
8.8 字符串处理库中的查找函数 266
8.9 字符串处理库中的内存函数 271
8.10 字符串处理库中的其它函数 275
第9章 格式化输入/输出 289
9.1 引言 289
9.2 流 289
9.3 printf的格式化输出 289
9.4 打印整数 290
9.5 打印浮点数 291
9.6 打印字符串和字符 292
9.7 其它转换说明符 293
9.8 打印的域宽和精度 294
9.9 在printf的格式控制串中使用标志 296
9.10 打印直接量和转义序列 299
9.11 scanf函数的格式化输入 299
第10章 结构、联合、位运算和枚举 313
10.1 引言 313
10.2 结构的定义 313
10.3 结构的初始化 314
10.4 访问结构成员 315
10.5 结构和函数 316
10.6 类型定义:typedef 316
10.7 范例:高效的洗牌和发牌模拟 317
10.8 联合 319
10.9 位运算符 321
10.10 位段 327
10.11 枚举常量 330
第11章 文件处理 341
11.1 引言 341
11.2 数据的层次结构 341
11.3 文件和流 343
11.4 建立顺序存取文件 343
11.5 读取顺序存取文件中的数据 347
11.6 随机存取文件 351
11.7 建立随机存取文件 352
11.8 向随机存取文件中随机地写入数据 353
11.9 从随机存取文件中随机地读取数据 355
11.10 实例研究:事务处理程序 357
第12章 数据结构 371
12.1 引言 371
12.2 自引用结构 371
12.3 动态内存分配 372
12.4 键表 373
12.5 堆栈 379
12.6 队列 384
12.7 树 389
第13章 预处理程序 415
13.1 引言 415
13.2 预处理指令#include 415
13.3 预处理指令#define:符号常量 415
13.4 预处理指令#define:宏 416
13.5 条件编译 417
13.6 预处理指令#error和#program 418
13.7 运算符#和# 418
13.8 行号 419
13.9 预定义的符号常量 419
13.10 宏assert 419
第14章 高级话题 425
14.1 引言 425
14.2 UNIX和DOS系统中的输入/输出重定向 425
14.3 变长参数列表 426
14.4 使用命令行参数 428
14.5 对编译多个源文件程序的说明 428
14.6 用exit和atexit终止程序的执行 430
14.7 类型限定符volatile 431
14.8 整数和浮点数常数的后缀 431
14.9 再谈文件 432
14.10 信号处理 433
14.11 动态内存分配:函数calloc和realloc 435
14.12 无条件转移:goto语句 436
附录A C语法 443
附录B 标准库 455
附录C 运算符的优先级与结合性 483
附录D ASCII字符集 484
附录E 数值系统 485