第1章 概论 1
1.1 计算机软件及其发展 1
1.1.1 计算机软件的定义 1
1.1.2 计算机软件的功能及分类 1
1.1.3 计算机软件的发展 2
1.1.4 软件工程学的基本概念 3
1.2 程序设计 4
1.2.1 程序设计语言 5
1.2.2 语言处理程序 6
1.2.3 程序设计应遵循的基本原则 8
1.2.4 程序设计的基本过程 9
1.2.5 程序设计风格 10
习题1 11
第2章 C语言概述 12
2.1 C语言的发展背景 12
2.2 C语言的特点 12
2.3 简单C语言程序介绍 13
2.3.2 函数的一般结构 15
2.3.1 C语言源程序的构成 15
2.3.3 C语言程序的执行 17
2.3.4 源程序书写格式 17
2.4 C语句概述 18
2.4.1 控制语句 18
2.4.2 函数调用语句 18
2.4.3 表达式语句 18
2.4.4 空语句 18
2.4.5 复合语句 19
2.5 C程序的上机步骤 19
2.5.1 运行一个C语言程序的一般过程 19
2.5.2 TC的启动、退出与命令菜单 19
2.5.3 编辑并保存一个C语言源程序 21
2.5.4 编译、连接——单个源程序文件 21
2.5.5 运行与查看结果 22
2.5.6 编辑下一个新的源程序 22
习题2 22
3.1 算法的概念及特性 23
第3章 程序的灵魂——算法 23
3.2 算法的描述 25
3.2.1 自然语言表示 25
3.2.2 伪代码表示 25
3.2.3 传统流程图表示 26
3.2.4 N-S结构化流程图 27
3.2.5 计算机语言表示 28
3.3 算法的设计 29
习题3 30
第4章 数据类型、运算符与表达式 31
4.1 C语言的数据类型 31
4.2 常量与变量 32
4.2.1 常量和符号常量 32
4.2.2 变量 33
4.3 整型数据 35
4.3.1 整型常量 35
4.3.2 整型变量 35
4.4.2 实型变量 37
4.4.1 实型常量 37
4.4 实型数据 37
4.5 字符型数据 38
4.5.1 字符常量 38
4.5.2 字符变量 39
4.5.3 字符数据在内存中的存储形式及其使用方法 40
4.5.4 字符串常量 40
4.6 运算符与表达式 41
4.6.1 运算符与表达式概述 41
4.6.2 算术运算符和算术表达式 42
4.6.3 赋值运算 44
4.6.4 关系运算符与关系表达式 45
4.6.5 逻辑运算符与逻辑表达式 46
4.6.6 其他运算 47
4.6.7 不同类型数据间的类型转换 48
习题4 49
第5章 顺序结构程序设计 52
5.1 顺序结构程序概述 52
5.2 赋值语句 53
5.3 数据输入输出的概念 54
5.4 格式化输出函数printf 55
5.5 格式化输入函数scanf 56
5.6 字符输入和输出的函数 57
5.6.1 字符输出函数putchar 57
5.6.2 字符输入函数getchar() 58
5.7 顺序程序结构设计 58
习题5 59
6.1.1 关系运算 61
6.1 关系运算符和关系表达式 61
第6章 选择结构程序设计 61
6.1.2 关系表达式 62
6.2 逻辑运算符和逻辑表达式 62
6.2.1 逻辑运算 62
6.2.2 逻辑表达式 63
6.3 if语句和条件运算符 64
6.3.1 if语句 64
6.3.2 if语句的嵌套 66
6.4.1 条件表达式 68
6.4 条件表达式构成的选择结构 68
6.4.3 使用条件表达式的注意事项 69
6.4.2 条件表达式的运算优先级 69
6.5 switch语句 70
6.5.1 switch语句的格式与执行过程 70
6.5.2 使用说明 71
6.6 选择结构程序举例 72
习题6 75
第7章 循环结构程序设计 77
7.2 循环控制语句 78
7.1 循环结构及其执行过程 78
7.2.1 while语句 79
7.2.2 do-while语句 80
7.2.3 for语句 81
7.2.4 三种循环控制语句比较 82
7.3 循环结构程序设计 83
7.4 循环的嵌套 86
7.5.2 穷举算法 88
7.5.1 迭代算法 88
7.5 迭代和穷举算法在循环结构程序中的实现 88
7.6 break和continue语句 89
7.6.1 break语句 89
7.6.2 continue语句 90
习题7 90
第8章 数组 93
8.1 一维数组的定义和引用 93
8.1.1 一维数组的定义 93
8.1.2 一维数组的初始化 94
8.1.3 应用举例 94
8.2 二维数组的定义和引用 96
8.2.1 二维数组的定义 96
8.2.2 二维数组的引用 97
8.2.3 二维数组的初始化 97
8.2.4 二维数组程序举例 99
8.3.2 字符数组的初始化 101
8.3.3 字符数组的引用 101
8.3 字符数组 101
8.3.1 字符数组的定义 101
8.3.4 字符串 102
8.3.5 字符数组的输入输出 103
8.3.6 字符串处理函数 104
8.3.7 字符数组应用举例 107
习题8 108
第9章 函数 109
9.1 概述 109
9.2.1 函数定义形式 111
9.2 函数的定义 111
9.2.2 函数定义的有关说明 112
9.3 函数的类型、参数与返回值 112
9.3.1 函数的参数:形式参数和实际参数 112
9.3.2 函数的类型和返回值 113
9.4 函数的调用 115
9.4.1 函数调用的一般形式 115
9.4.2 函数的调用方式 117
9.4.3 函数调用的前提条件 117
9.4.4 函数说明语句 117
9.4.5 函数的嵌套调用 119
9.4.6 函数的递归调用 121
9.5 数组作为函数参数 122
9.5.1 数组元素作为函数的实参 122
9.5.2 一维数组名作为函数的参数 123
9.5.3 多维数组名作为函数的参数 125
9.6 变量及其存储类型 126
9.6.1 变量的有效范围 126
9.6.2 变量的存储类别 129
9.6.3 内部函数和外部函数 134
9.7 多文件程序的运行 136
习题9 136
第10章 预处理命令 139
10.1 宏定义 139
10.1.1 定义宏命令 139
10.1.2 取消宏的命令 144
10.2 文件包含命令 144
10.3.1 格式一 146
10.3 条件编译命令 146
10.3.2 格式二 148
10.3.3 格式三 148
习题10 150
第11章 指针 152
11.1 地址和指针的概念 152
11.2 指针变量的定义及引用 152
11.2.1 指针变量的定义 152
11.2.2 指针变量的引用 153
11.2.3 指针变量作为函数的参数 154
11.3 指针与数组 156
11.3.1 指向数组元素的指针 156
11.3.2 通过指针引用数组元素 156
11.3.3 用数组名(指针)作为函数的参数 156
11.4 字符串与指针 158
11.4.1 字符串的表示形式 158
11.4.2 字符串指针作为函数参数 159
11.5 指向函数的指针 160
11.5.1 指向函数的指针变量的定义和使用 160
11.5.2 指向函数的指针作为函数的参数 161
11.6 返回指针值的函数 163
11.7 main函数的参数及其返回值 165
习题11 166
第12章 结构体与共用体 169
12.1 结构体 169
12.1.1 结构体概述 169
12.1.2 结构体类型的定义 169
12.1.3 结构体变量的定义 170
12.1.4 结构体变量的引用 172
12.1.5 结构体变量的初始化 173
12.1.6 结构体数组 174
12.2 指向结构体类型数据的指针 176
12.2.1 指向结构体变量的指针 176
12.2.2 指向结构体数组的指针 177
12.2.3 用结构体变量和指向结构体的指针作为函数的参数 178
12.3 用指针处理链表 179
12.3.1 链表概述 179
12.4.2 共用体变量引用的特点 181
12.4.1 共用体的概念 181
12.4 共用体 181
12.5 枚举类型 184
12.6 用typedef定义类型 187
习题12 187
第13章 位运算 189
13.1 位运算符与位运算 189
13.1.1 按位与运算 189
13.1.2 按位或运算 190
13.1.3 按位异或运算 191
13.1.4 位取反运算 192
13.1.5 位左移运算 193
13.1.6 位右移运算 193
13.1.7 位运算与赋值运算 194
13.1.8 不同长度的数据进行位运算 194
13.1.9 位运算示例 194
13.2 位段 195
习题13 198
14.1.1 操作系统的功能和类型简介 199
14.1 文件的基本概念 199
第14章 文件 199
14.1.2 文件的分类 201
14.1.3 文件类型指针 202
14.2 缓冲文件系统 202
14.2.1 文件的打开、关闭 202
14.2.2 文件的输入/输出操作 205
14.3 非缓冲文件系统 214
14.3.1 文件的打开和关闭 214
14.3.3 随机定位函数 215
14.3.2 读写函数 215
14.3.4 程序举例 216
习题14 217
第15章 数据结构 218
15.1 基本概念和术语 218
15.2 线性表 220
15.2.1 线性表的定义 220
15.2.2 线性表的基本操作 221
15.2.3 线性表的顺序存储结构 222
15.2.4 线性表的链式表示与实现 226
15.2.6 双向链表 234
15.2.5 循环链表 234
15.3 栈 235
15.3.1 栈的定义 235
15.3.2 栈的基本运算 235
15.3.3 顺序栈 235
15.3.4 链栈 237
15.3.5 栈的应用 238
15.4.2 队列的基本运算 240
15.4 队列 240
15.4.1 队列的定义 240
15.4.3 队列的链式表示和实现 241
15.5 二叉树 243
15.5.1 二叉树的基本概念 243
15.5.2 二叉树的性质 245
15.5.3 二叉树的基本操作 245
15.5.4 顺序存储结构 245
15.5.6 遍历二叉树 246
15.5.5 链式存储结构 246
15.6 图 248
15.6.1 基本概念和术语 248
15.6.2 图的基本操作 250
15.6.3 图的存储结构 251
15.7 查找 253
15.7.1 基本概念与术语 253
15.7.2 查找表的存储结构 254
15.7.3 顺序表的查找 254
15.8 排序 256
15.8.1 直接插入排序 257
15.8.2 冒泡排序(Bubble Sort) 258
15.9.3 简单选择排序 259
习题15 260
第16章 软件工程 266
16.1 发展简史 266
16.2 软件工程框架 266
16.2.1 软件工程目标 266
16.3.2 软件开发方法 267
16.3.1 软件开发模型 267
16.2.2 软件工程过程 267
16.3 软件工程内容 267
16.2.3 软件工程原则 267
16.3.3 软件过程 268
16.3.4 软件工具 268
16.3.5 软件开发环境 269
习题16 270
附录1 C语言中的关键字 271
附录2 运算符和结合性 272
附录3 Turbo C的安装使用指南 273
一、Turbo C的产生与发展 273
二、Turbo C 3.0集成开发环境的使用 273
三、Turbo C 3.0的配置文件 280
附录4 Turbo C编译错误信息 281
附录5 Turbo C库函数 292
附录6 ASCII码表 313
参考文献 316