第一章 概念 1
1.1 什么是计算机 1
1.2 计算机组织 1
目录 1
1.3 批处理、多道程序设计和分时处理 2
1.4 个人计算、分布计算和客户/服务器计算 2
1.5 机器语言、汇编语言和高级语言 2
1.6 C语言的历史 3
1.9 结构化程序设计 5
1.10 C语言基本环境 5
1.8 其它高级语言 5
1.7 C标准库 5
1.11 关于C语言的注意事项 7
1.12 并发C 7
1.13 面向对象的程序设计和C++ 8
1.14 小结 8
1.15 编程技巧 9
1.16 自我练习与答案 9
1.17 习题 10
2.1 一个简单的C程序:输出一个文本行 12
第二章 C语言初步 12
2.2 另一个简单的C程序——加两个整数 13
2.3 内存储器的概念 17
2.4 C中的算术运算 18
2.5 等号和关系运算符 19
2.6 小结 23
2.7 常见错误 24
2.8 编程技巧 24
2.9 自我练习与答案 24
2.10 习题 27
第三章 结构化程序设计 29
3.1 算法 29
3.2 伪代码 29
3.3 控制结构 30
3.4 If选择结构 30
3.5 If/Else选择结构 30
3.6 While循环结构 33
3.7 制定算法 34
3.8 自顶向下,逐步求精法 35
3.9 结构化框图 39
3.10 设计一个程序流程图 41
3.11 流程图:法则 42
3.12 一个完整的实例 42
3.13 增量、减量以及赋值运算符 47
3.14 小结 49
3.15 常见错误 51
3.16 编程技巧 51
3.17 自我练习与答案 51
3.18 习题 55
4.2 循环的必要条件 57
4.3 计数控制循环 57
第四章 程序控制 57
4.1 引言 57
4.4 for循环结构 59
4.5 关于for结构的几点说明 62
4.6 for结构的实例 63
4.7 switch语句 66
4.8 do/while循环结构 71
4.9 break语句和continue语句 72
4.10 逻辑运算符 74
4.11 结构程序设计小结 76
4.12 小结 81
4.13 常见错误 82
4.14 编程技巧 82
4.15 练习与答案 83
4.16 习题 86
第五章 函数 88
5.1 引言 88
5.2 C语言中的程序模块 88
5.3 数学函数库 89
5.4 函数 90
5.5 函数定义 91
5.6 函数原型 93
5.7 头文件 96
5.8 函数调用、赋值调用与赋地址调用 97
5.9 随机数发生器 97
5.10 实例:一个随机的游戏 103
5.11 存储类别 106
5.12 引用标识符的规则 107
5.13 递归 109
5.14 使用递归的实例:斐波那契(Fibonacci) 112
5.15 递归与迭代的比较 113
5.16 小结 115
5.17 常见错误 117
5.18 编程技巧 117
5.19 自我练习与答案 118
5.20 习题 123
第六章 数组 127
6.1 数组 127
6.2 数组定义 128
6.3 数组举例 129
6.4 数组做函数参数 136
6.5 数组排序 140
6.6 实例:用数组计算平均数,中位数以及态 142
6.7 数组查找 146
6.8 多维数组 148
6.9 小结 149
6.10 常见错误 150
6.11 编程技巧 150
6.12 自我练习与答案 151
6.13 习题 153
第七章 指针 157
7.1 引言 157
7.2 指针变量的定义及初始化 157
7.3 指针运算符 158
7.4 用引用调用函数 160
7.5 用引用调用函数的冒泡排序 164
7.6 指针表达式与指针的算术运算 165
7.7 指针与数组间的关系 167
7.8 指针数组 168
7.9 实例 170
7.10 函数指针 173
7.11 小结 176
7.12 常见错误 178
7.13 编程技巧 178
7.14 自我练习与答案 178
7.15 习题 181
第八章 字符与字符串 184
8.1 引言 184
8.2 字符与字符串的基础 184
8.3 字符处理库 185
8.4 串转换函数 191
8.5 标准输入/输出库函数 196
8.6 串处理库中的字符串操作函数 200
8.7 串处理库中的比较函数 202
8.8 串处理库中的查找函数 203
8.9 串处理库中的内存处理函数 209
8.10 串处理库中的其它函数 214
8.11 小结 215
8.14 自我练习与答案 218
8.13 编程技巧 218
8.12 常见错误 218
8.15 习题 220
第九章 标准输入/输出 222
9.1 引言 222
9.2 流 222
9.3 用printf进行格式化输出 222
9.4 输出整数 223
9.5 输出浮点数 224
9.6 输出字符串与字符 225
9.7 其它一些格式说明 226
9.8 用字段宽度以及精度输出 227
9.9 在格式控制串中使用标志 229
9.10 输出文字及转义序列 232
9.11 用scanf进行格式化输入 233
9.12 小结 239
9.13 常见错误 240
9.14 编程技巧 240
9.15 自我练习与答案 241
9.16 习题 243
10.1 结构定义 245
第十章 结构、联合、位操作以及枚举 245
10.2 结构初始化 246
10.3 结构成员的存取 247
10.4 函数使用结构 248
10.5 Typedef 249
10.6 联合 249
10.7 位运算符 251
10.8 位域 259
10.9 枚举常量 262
10.10 小结 264
10.11 常见错误 265
10.12 编程技巧 266
10.13 自我练习与答案 266
10.14 习题 268
第十一章 文件处理 270
11.1 数据层次结构 270
11.2 文件和流 271
11.3 生成顺序存取文件 272
11.4 从顺序存取文件读取数据 277
11.5 随机文件 281
11.6 建立随机文件 282
11.7 写随机文件 284
11.8 读随机文件 287
11.9 实例:一个事务处理程序 289
11.10 小结 294
11.11 常见的错误 295
11.12 编程技巧 296
11.13 自我练习与答案 296
11.14 习题 298
12.3 动态内存分配 301
12.2 自相关结构 301
12.1 引言 301
第十二章 数据结构 301
12.4 链表 302
12.5 栈 311
12.6 队列 316
12.7 树 321
12.8 小结 328
12.10 编程技巧 329
12.11 自我练习与答案 329
12.9 常见错误 329
12.12 习题 330
第十三章 预处理程序 332
13.1 引言 332
13.2 #include预处理命令 332
13.3 #define预处理命令:符号常数 333
13.4 #define预处理命令:宏 333
13.5 条件编译 335
13.6 #error和#pragma预处理命令 336
13.9 预定义符号常量 337
13.8 行号 337
13.7 #和##操作符 337
13.10 Assert宏 338
13.11 实例 338
13.12 小结 340
13.13 常见错误 341
13.14 编程技巧 341
13.15 自我练习与答案 341
14.1 引言 344
14.2 排序的基本概念 344
第十四章 C语言在排序和查找中的应用 344
14.3 冒泡排序法 345
14.4 选择排序法 348
14.5 插入排序法 349
14.6 shell排序法 350
14.7 Quicksort排序法 352
14.8 字符串数组的排序 354
14.9 结构的排序 355
14.10 查找 357
15.2 样本,总体,分布和变量 359
15.1 引言 359
第十五章 统计分析 359
15.3 基本的统计方法 360
15.4 在屏幕上简单地绘图 366
15.5 预测与回归方程 371
15.6 开发一个完整的统计程序 374
15.7 应用统计程序 388
15.8 最后的想法 390
16.1 引言 391
16.2 表达式语法分析 391
第十六章 语言解释器 391
16.3 小BASIC解释器 406
16.4 增强和扩充解释器 435
第十七章 用BTREE建立一个索引文件模式 436
17.1 概念 436
17.2 BTREE模块的功能说明 440
17.3 BTREE伪代码 441
17.4 异常和设计选择 445
17.5 BTREE程序清单 446
17.6 BTREE分析 484
17.7 测试BTREE 485
17.8 一个简单的应用 486
17.9 小结 494
第十八章 C语言在人工智能中的应用 496
18.1 引言 496
18.2 表示法及术语 497
18.3 组合爆炸 498
18.4 搜索技术 499
18.5 搜索方法的评价 499
18.6 图形表示法 500
18.7 深度优先搜索 501
18.8 广度优先搜索 511
18.9 启发式搜索 513
18.10 “登山”搜索 513
18.11 最小代价搜索 519
18.12 搜索方法的选择 521
18.13 求多个解 521
18.14 寻找“最佳”解 528
18.15 有关丢钥匙问题 534
第十九章 C语言的移植和调试 538
19.1 C语言移植 538
19.2 调试 540
19.3 通用调试理论 548
19.4 程序维护的艺术 549
第二十章 高级课题 551
20.1 UNIX系统和DOS系统中的输入输出改向 551
20.2 可变长参数表 552
20.3 使用命令行参数 554
20.4 编译多个源文件程序的注意事项 554
20.5 使用Exit和Atexit终止程序 555
20.7 整数和浮点数常量后缀 557
20.6 Const和Volatile类型修饰符 557
20.8 关于文件的进一步讨论 558
20.9 信号处理 559
20.10 动态内存分配:Calloc和Realloc函数 563
20.11 小结 563
20.12 常见错误 565
20.13 自我练习与答案 565
20.14 习题 566
第二十一章 面向对象的程序设计和C++ 567
21.1 面向对象的程序设计 567
21.3 C++中的说明 568
21.2 C++单行注释 568
21.4 C++流式输入输出 569
21.5 直接插入函数 570
21.6 引用参数 571
21 使用New和Delete进行动态内存分配 573
21.8 缺省参数 574
21.9 类和对象 574
21.10 范围运算符 575
21.13 友元函数 576
21.12 存取说明符 576
21.11 访问类成员 576
21.14 构造函数和析构函数 577
21.15 继承和导出类 577
21.16 运算符重载 578
21.17 函数重载 578
21.18 多态和虚函数 579
21.19 实例 581
21.20 小结 599
21.21 常见错误 600
21.23 自我练习与答案 601
21.22 编程技巧 601
21.24 习题 602
附录A C语言中的语法 603
A.1 词法 603
A.2 语法 607
A.3 预处理命令 613
附录B 标准库 615
B.1 错误〈errno.h〉 615
B.2 一般定义〈stddef.h〉 615
B.4 字符处理〈ctype.h〉 616
B.3 诊断〈assert.h〉 616
B.5 数学〈math.h〉 617
B.6 非局部跳转〈setjmp.h〉 619
B.7 变量参数〈stdarg.h〉 620
B.8 输入/输出〈stdio.h〉 620
B.9 一般实用程序〈stdlib.h〉 629
B.10 字符串处理〈string.h〉 634
B.11 日期与时间〈time.h〉 637
B.12 环境工具的限定 638
附录C 运算符优先级以及结合性 642
附录D ASCII码表 643