1.1 简介 1
13.6 #error和#pragma预处理指令 43 1
目录 1
第1章 计算机、Internet和万维网入门 1
1.2 计算机是什么 2
1.3 计算机的组织 3
1.4 操作系统的演变 3
1.5 个人计算、分布式计算和客户/服务器计算 4
1.6 机器语言、汇编语言和高级语言 5
1.7 C语言的历史 6
1.8 C语言的标准库 7
1.9 C语言程序开发环境基础 7
1.10 Internet的历史 10
1.11 万维网的历史 11
1.12 C语言及本书的注意事项 11
总结 12
练习 14
自测练习答案 14
自测练习 14
2.1 简介 16
2.2 一个简单的C程序:显示一行文本 16
第2章 程序设计入门 16
2.3 另一个简单的C程序:两个整数相加 20
2.4 内存的概念 24
2.5 算术运算 25
2.6 判断:等式和关系运算符 28
总结 32
自测练习 33
自测练习答案 34
练习 35
3.2 算法 40
3.1 简介 40
第3章 结构化程序开发 40
3.3 伪码 41
3.4 控制结构 41
3.5 if选择语句 43
3.6 if/else选择语句 44
3.7 while循环语句 48
3.8 表述算法:案例研究1(计数器控制循环) 49
3.9 使用自项向下、逐步求精方法表述算法:案例研究2(标志控制循环) 51
3.10 使用自项向下、逐步求精方法表述算法:案例研究3(嵌套控制结构) 56
3.11 赋值运算符 60
3.12 增量运算符和减量运算符 61
总结 63
自测练习 64
自测练习答案 66
练习 68
第4章 程序控制 76
4.2 循环的本质 76
4.1 简介 76
4.3 计数器控制循环 77
4.4 for循环语句 78
4.5 for语句:注意事项和经验 81
4.6 使用for语句的示例 82
4.7 switch多重选择语句 85
4.8 do/while循环语句 90
4.9 break和continue语句 92
4.10 逻辑运算符 93
4.11 关于相等运算符(=)和赋值运算符(=) 96
4.12 结构化程序设计小结 97
总结 102
自测练习 103
自测练习答案 104
练习 105
5.1 简介 112
第5章 函数 112
5.2 C语言的程序模块 112
5.3 数学库函数 113
5.4 函数 114
5.5 函数的定义 115
5.6 函数原型 119
5.7 头文件 121
5.8 调用函数:值调用和引用调用 122
5.9 产生随机数 122
5.10 示例:运气游戏 127
5.11 存储类别 130
5.12 作用域的规则 132
5.13 递归 135
5.14 递归示例:斐波纳契数列 138
5.15 递归与迭代 142
总结 144
自测练习 146
自测练习答案 148
练习 151
第6章 数组 159
6.1 简介 159
6.2 数组 159
6.3 数组的定义 161
6.4 数组使用示例 161
6.5 数组传递给函数 173
6.6 数组排序 177
6.7 案例研究:用数组计算平均值、中值和最频值 180
6.8 数组查找 184
6.9 多维数组 189
总结 195
自测练习 197
自测练习答案 198
练习 199
递归练习 208
第7章 指针 210
7.1 简介 210
7.2 指针变量的定义和初始化 210
7.3 指针运算符 211
7.4 引用调用 213
7.5 使用指针的const限定符 217
7.6 使用引用调用的冒泡排序 223
7.7 sizeof运算符 226
7.8 指针表达式和指针算法 228
7.9 指针和数组的关系 230
7.10 指针数组 234
7.11 案例研究:洗牌和发牌模拟 235
7.12 函数指针 239
总结 244
自测练习 245
自测练习答案 246
练习 248
特殊主题:构建自己的计算机 251
第8章 字符和字符串 260
8.1 简介 260
8.2 字符串和字符的基本知识 260
8.3 字符处理库 262
8.4 字符串转换函数 266
8.5 标准输入/输出库函数 271
8.6 字符串处理库的字符串操作函数 274
8.7 字符处理库的比较函数 276
8.8 字符串处理库的查找函数 278
8.9 字符串处理库的内存函数 284
8.10 字符串处理库的其他函数 287
总结 288
自测练习 290
自测练习答案 291
练习 292
特殊主题:高级字符串处理练习 294
一个具有挑战性的字符串处理项目 297
9.2 流 298
9.3 用printf格式化输出 298
9.1 简介 298
第9章 格式化的输入/输出 298
9.4 输出整数 299
9.5 输出浮点数 300
9.6 输出字符串和字符 302
9.7 其他格式转换符 303
9.8 用字段宽度和精度输出 304
9.9 在printf格式控制字符串中使用标记 306
9.10 输出字面量和转义序列 309
9.11 用scanf格式化输入 309
总结 314
自测练习 316
自测练习答案 317
练习 318
10.2 结构定义 320
第10章 结构、联合、位操作和枚举 320
10.1 简介 320
10.3 初始化结构 322
10.4 访问结构成员 323
10.5 在函数中使用结构 324
10.6 typedef 325
10.7 示例:高性能洗牌和发牌模拟程序 325
10.8 联合 328
10.9 按位运算符 330
10.10 位域 337
10.11 枚举常量 340
总结 342
自测练习 343
自测练习答案 344
练习 345
11.2 数据层次结构 349
11.1 简介 349
第11章 文件处理 349
11.3 文件和流 351
11.4 创建顺序访问文件 351
11.5 从顺序访问文件中读取数据 356
11.6 随机访问文件 361
11.7 创建随机访问文件 361
11.8 随机向随机访问文件中写入数据 363
11.9 随机从随机访问文件中读取数据 366
11.10 案例研究:事务处理程序 367
总结 372
自测练习 373
自测练习答案 374
练习 375
12.2 自引用结构 380
12.1 简介 380
第12章 数据结构 380
12.3 动态内存分配 381
12.4 链表 382
12.5 堆栈 390
12.6 队列 396
12.7 树 402
总结 407
自测练习 408
自测练习答案 409
练习 410
特殊主题:构建自己的编译器 416
第13章 预处理器 427
13.1 简介 427
13.2 #include预处理指令 427
13.3 #define预处理指令:符号常量 427
13.4 #define预处理指令:宏 428
13.5 条件编译 430
13.7 #和##运算符 431
13.8 行号 431
13.9 预定义符号常量 432
13.10 断言 432
总结 432
自测练习 433
自测练习答案 434
练习 435
第14章 高级技术 436
14.1 简介 436
14.2 在UNIX和Windows系统上重定向输入/输出 436
14.3 变长参数列表 437
14.4 使用命令行参数 439
14.5 编译多源文件程序 440
14.6 使用exit和atexit终止程序 442
14.7 volatile类型限定符 443
14.8 整数和浮点常量的前缀 443
14.9 文件的其他问题 443
14.10 信号处理 445
14.11 动态内存分配:函数calloc和realloc 448
14.12 无条件跳转:goto 448
总结 450
自测练习 451
自测练习答案 452
练习 452
A.1 资源 453
A.2 编译器 453
附录A Internet与Web资源 453
附录B C99 Internet与Web资源 454
附录C 运算符优先级 456
附录D ASCll字符集 458
附录E 数制系统 459
E.1 简介 459
E.2 将二进制数缩写为八进制和十六进制数 461
E.3 将八进制和十六进制数转换成二进制数 463
E.4 从二进制、八进制、十六进制转换成十进制 463
E.5 从十进制转换为八进制、十六进制或二进制 464
E.6 负二进制数:补码记数法 465
自测练习 466
自测练习答案 467
练习 468
附录F 标准库资源 469