目录


上篇程序与结构1
第1章绪论3
1.1计算机的发展史3
1.2计算机的基本结构5
1.2.1计算机硬件6
1.2.2计算机软件9
1.2.3按层次的观点看到的计算机10
1.3程序及编程语言11
1.3.1程序11
1.3.2编程语言11
1.3.3程序是怎样运行的12
1.4算法13
1.4.1什么是算法13
1.4.2描述算法的方法14
1.5软件开发流程17
1.6创建C程序20
1.6.1编辑20
1.6.2编译21
1.6.3链接21
1.6.4执行21
1.7案例研究21
1.8本章小结22
1.9习题23

第2章编程初步24
2.1C语言的发展24
2.2C程序的基本结构26
2.2.1第一个C程序26
2.2.2第二个C程序29
2.2.3C程序结构的特点32
2.3编程风格32
2.3.1源程序文档化32
2.3.2数据声明原则33
2.3.3语句构造原则34
2.3.4输入与输出原则34
2.3.5追求效率原则34
2.4用计算机解题的方法35
2.4.1分析问题35
2.4.2算法设计36
2.4.3编程实现36
2.4.4测试及调试36
2.5案例研究37
2.6本章小结40
2.7习题40
程序设计基础目录
第3章简单的C程序41
3.1标识符41
3.2变量42
3.3数据类型44
3.3.1整型44
3.3.2浮点型48
3.3.3字符型49
3.4运算符52
3.4.1算术运算符54
3.4.2赋值运算符55
3.4.3强制类型转换57
3.4.4关系运算符57
3.4.5逻辑运算符59
3.4.6自增/自减运算符61
3.4.7逗号运算符63
3.5符号常量64
3.6标准输入输出65
3.6.1格式化输出65
3.6.2格式化输入68
3.7案例研究72
3.8本章小结74
3.9习题75

第4章顺序结构76
4.1结构化程序设计76
4.2顺序结构77
4.3案例研究78
4.4本章小结80
4.5习题81

第5章选择结构82
5.1选择的过程82
5.2ifelse控制结构83
5.2.1if语句的两种形式83
5.2.2if语句嵌套87
5.3switch89
5.4案例研究92
5.5本章小结94
5.6习题94

第6章循环结构96
6.1循环结构简介96
6.2循环控制语句97
6.2.1while语句97
6.2.2for语句100
6.2.3dowhile语句102
6.2.4三种循环控制语句的比较104
6.2.5再论for语句104
6.3break和continue语句105
6.4案例研究107
6.5本章小结113
6.6习题114

第7章函数116
7.1模块化程序设计116
7.2C语言的函数118
7.2.1函数的概念118
7.2.2函数的分类118
7.3函数的定义119
7.3.1无参函数的定义119
7.3.2有参函数的定义120
7.4函数的调用121
7.4.1函数调用的一般形式121
7.4.2函数嵌套调用及分析123
7.5形参与实参的关系125
7.5.1函数为什么有参数125
7.5.2值传递机制126
7.6函数的返回值129
7.7局部变量与全局变量130
7.7.1局部变量130
7.7.2黑盒的观点132
7.7.3全局变量133
7.8变量的存储类型135
7.9函数原型140
7.10案例研究142
7.11本章小结145
7.12习题145
中篇程序与数据147
第8章数组149
8.1什么是数组149
8.2一维数组151
8.2.1一维数组的定义151
8.2.2一维数组元素的引用152
8.2.3一维数组的存储153
8.2.4一维数组的初始化155
8.3多维数组156
8.3.1双下标变量156
8.3.2二维数组的定义157
8.3.3二维数组元素的引用158
8.2.4二维数组的存储159
8.2.5二维数组的初始化161
8.4案例研究162
8.5本章小结172
8.6习题172

第9章字符串175
9.1什么是字符串175
9.2字符串的存储176
9.2.1一维字符数组的定义和初始化176
9.2.2二维字符数组的定义和初始化178
9.2.3字符数组的引用178
9.3字符串处理函数182
9.4案例研究187
9.5本章小结196
9.6习题197

第10章指针199
10.1为什么使用指针199
10.2什么是指针201
10.3指针变量的定义和引用202
10.3.1指针变量的定义202
10.3.2指针变量的引用202
10.3.3间接运算符()203
10.3.4指针变量的更多运算方法208
10.4指针与一维数组210
10.4.1定义访问一维数组的指针210
10.4.2用指针引用一维数组元素211
10.5指针与字符串214
10.6内存的使用216
10.6.1动态内存分配: malloc()函数217
10.6.2释放动态分配的内存218
10.7指针函数219
10.8案例研究220
10.9本章小结234
10.10习题235

第11章指针进阶236
11.1指针与多维数组236
11.2指针数组240
11.2.1指针数组的定义及操作240
11.2.2在受限的内存中运行程序242
11.3指向指针的指针243
11.4函数指针245
11.5案例研究247
11.6本章小结257
11.7习题258

第12章结构类型260
12.1什么是结构类型260
12.2定义结构类型261
12.3结构变量的定义和初始化263
12.4结构变量的引用方法265
12.5使用typedef为已有类型定义别名268
12.6结构数组269
12.7结构指针272
12.8结构数组与指针274
12.9案例研究276
12.10本章小结281
12.11习题281
下篇应用及相关主题283
第13章数据的组织及应用285
13.1顺序表285
13.1.1顺序表的操作案例285
13.1.2顺序表的特点295
13.2链表295
13.2.1单链表295
13.2.2单链表的操作案例297
13.2.3链表的存储特点310
13.3贪心算法310
13.4递归算法314
13.5回溯算法317
13.6本章小结322
13.7习题323

第14章相关主题324
14.1文件324
14.1.1什么是文件325
14.1.2文件流326
14.1.3文件指针326
14.1.4文件的基本操作327
14.1.5文件小结341
14.2编译预处理341
14.2.1宏定义341
14.2.2文件包含345
14.2.3条件编译346
14.2.4编译预处理小结350
14.3位运算351
14.3.1按位与运算351
14.3.2按位或运算352
14.3.3按位异或运算352
14.3.4按位取反运算353
14.3.5按位左移运算353
14.3.6按位右移运算353
14.3.7按位复合赋值运算符353
14.3.8位域(位段)354
14.3.9案例研究357
14.3.10位运算小结359
14.4枚举类型359
14.4.1枚举类型的定义360
14.4.2枚举变量的定义和使用360
14.5本章小结363
14.6习题363

附录AASCII码表365

附录BC语言的关键字367

附录C运算符表369

附录D标准C语言库371
D.1C语言的头文件371
D.2C语言的函数库372
D.2.1输入输出函数372
D.2.2数学函数373
D.2.3动态分配函数和随机函数374
D.2.4字符串函数374
D.2.5字符函数375