第1章 程序设计基础 1
1.1 人的思维形式 1
1.2 程序设计基础 2
1.2.1 程序设计的基本概念 2
1.2.2 数据结构概述 4
1.2.3 算法 6
1.3 C语言的发展与特点 10
1.3.1 C语言的发展状况 10
1.3.2 C语言的特点 11
1.4 C程序的特点 12
1.5 Turbo C运行环境 14
1.5.1 Turbo C集成开发环境介绍 14
1.5.2 Turbo C集成开发环境的使用 16
练习与思考 19
第2章 基本数据类型及运算 20
2.1 数据类型 20
2.2 常量与变量 21
2.2.1 标识符 21
2.2.2 常量 22
2.2.3 变量及其说明 28
2.3 运算符与表达式 33
2.4 算术运算符和算术表达式 35
2.4.1 算术运算符 35
2.4.2 算术表达式 36
2.4.3 算术运算符的优先级和结合性 36
2.5 自增自减运算符及其表达式 37
2.6 赋值运算符和赋值表达式 39
2.6.1 简单赋值运算符 39
2.6.2 赋值运算中的数据转换 40
2.6.3 复合赋值运算符 42
2.6.4 赋值表达式 42
2.7 逻辑运算符和逻辑表达式 43
2.7.1 逻辑运算符 43
2.7.2 逻辑运算的值 44
2.7.3 逻辑表达式 44
2.8 其他类型运算符和表达式 46
2.8.1 关系运算符和关系表达式 46
2.8.2 条件运算符和条件表达式 47
2.8.3 逗号运算符和逗号表达式 48
2.8.4 位运算符与简单的位运算 50
2.9 表达式的运算顺序和取值 54
2.9.1 表达式的运算顺序 54
2.9.2 表达式的取值 56
2.10 库函数 58
2.10.1 头文件 58
2.10.2 输入输出函数 59
2.10.3 数学函数 64
2.10.4 字符串处理函数 67
练习与思考 70
第3章 程序设计结构 73
3.1 程序设计结构的基本概念 73
3.1.1 结构化程序设计的基本原则 73
3.1.2 程序设计的三种基本结构 74
3.1.3 使用流程图描述程序算法 75
3.2 顺序结构 76
3.2.1 C语句 76
3.2.2 顺序结构程序设计 78
3.2.3 数据的输入输出 80
3.3 选择结构 86
3.3.1 用if语句实现选择结构 86
3.3.2 用switch实现多分支选择结构 91
3.3.3 选择结构程序举例 94
3.4 循环结构 97
3.4.1 while循环结构 97
3.4.2 do…while循环结构 99
3.4.3 for循环结构 100
3.4.4 循环嵌套 101
3.4.5 break语句 103
3.4.6 continue语句 103
3.5 程序举例 104
练习与思考 107
第4章 数组和字符串 110
4.1 一维数组 110
4.1.1 一维数组的定义 110
4.1.2 一维数组的初始化 111
4.1.3 一维数组元素的引用 112
4.1.4 一维数组的应用举例 113
4.2 二维数组 114
4.2.1 二维数组的定义 115
4.2.2 二维数组的初始化 115
4.2.3 二维数组元素的引用 117
4.2.4 二维数组应用举例 117
4.3 字符数组 118
4.3.1 字符数组的定义 118
4.3.2 字符数组的初始化 119
4.3.3 字符数组的引用 119
4.3.4 字符数组的应用举例 119
4.4 字符串 120
4.4.1 概述 120
4.4.2 字符串常量 122
4.4.3 字符串变量的数组形式 122
4.4.4 字符串的赋值与初始化 122
4.4.5 字符串的应用举例 123
4.5 数组元素的查找和排序 124
4.5.1 数组元素的查找 124
4.5.2 数组元素的排序 125
练习与思考 126
第5章 函数 129
5.1 函数基础知识 129
5.1.1 函数的概念 129
5.1.2 函数的分类 131
5.2 函数定义 131
5.2.1 函数定义的形式 131
5.2.2 空函数 134
5.3 函数原型与函数的调用 134
5.3.1 函数原型 134
5.3.2 函数的参数 138
5.3.3 函数的调用 140
5.4 函数的返回值 143
5.5 函数的嵌套调用 145
5.6 函数的递归调用 149
5.7 调用与被调用函数间的数据传递 154
5.7.1 调用与被调用函数间的数值传递 155
5.7.2 调用与被调用函数间的地址传递 157
5.8 变量的作用域 163
5.8.1 局部变量 163
5.8.2 全局变量 166
5.9 变量的存储类别 170
5.9.1 变量的存储方式与生存期 170
5.9.2 自动(auto)变量 171
5.9.3 静态(static)变量 173
5.9.4 外部(extern)变量 176
5.9.5 寄存器(register)变量 179
5.10 函数的作用域 180
5.10.1 内部函数 180
5.10.2 外部函数 182
练习与思考 184
第6章 指针 187
6.1 地址与指针 187
6.2 变量的指针和指针变量 188
6.2.1 指针变量的定义 188
6.2.2 指针变量的引用 190
6.3 指针运算 193
6.3.1 指针的算术运算 194
6.3.2 指针的逻辑运算 195
6.4 一维数组与指针 195
6.4.1 通过指针引用一维数组元素 195
6.4.2 指向数组的指针变量的运算 196
6.5 二维数组与指针 198
6.5.1 二维数组元素的地址 198
6.5.2 通过指针引用二维数组元素 198
6.5.3 指针数组 199
6.6 字符数组与指针 200
6.7 指针变量作函数的参数 202
6.8 函数与指针 203
6.8.1 指向函数的指针 203
6.8.2 函数指针作函数参数 205
6.8.3 返回指针值的函数 207
6.9 指向指针的指针变量 208
6.10 main函数的参数 210
练习与思考 211
第7章 构造数据类型 214
7.1 构造数据类型概述 214
7.2 结构体与结构体变量的定义 215
7.2.1 结构体的定义 215
7.2.2 结构体变量的定义 218
7.3 结构体变量的使用及初始化 219
7.3.1 结构体变量的使用 219
7.3.2 结构体变量的初始化 223
7.4 结构体数组 225
7.4.1 结构体数组的定义 225
7.4.2 结构体数组的初始化 227
7.4.3 结构体数组的使用 228
7.5 结构体指针 231
7.5.1 结构体指针的定义及使用 231
7.5.2 指向结构体数组的指针 235
7.6 结构体作函数参数 238
7.6.1 结构体成员变量作函数参数 238
7.6.2 结构体指针作函数参数 239
7.7 线性表 240
7.7.1 线性表的顺序存储与实现 241
7.7.2 线性表的链式存储与实现 244
7.8 共用体 254
7.8.1 共用体及共用体变量的定义 255
7.8.2 共用体变量的赋值和引用 256
7.9 枚举类型 259
7.9.1 枚举类型和枚举变量的定义 259
7.9.2 枚举类型变量的赋值和引用 260
7.10 用typedef定义类型 263
7.10.1 typedef定义类型的一般格式 263
7.10.2 类型定义的使用 264
7.11 位段结构类型 265
7.11.1 位段结构的定义 266
7.11.2 位段结构成员的使用 267
练习与思考 268
第8章 文件 269
8.1 文件概述 269
8.2 文件的打开与关闭 271
8.2.1 利用操作系统外壳功能打开输入和输出文件 271
8.2.2 C语言程序的文件打开和关闭 273
8.3 文件的读写 280
8.3.1 fscanf()和fprintf()函数 280
8.3.2 fputc()和fgetc()函数 281
8.3.3 fread()和fwrite()函数 284
8.3.4 其他读写函数 287
8.4 文件指针定位 289
8.5 文件的其他检测函数 293
8.6 特殊的文件名 296
8.7 文件类函数小结 299
练习与思考 301
第9章 编译预处理 303
9.1 宏定义 303
9.2 文件包含 310
9.3 条件编译 312
练习与思考 315
第10章 软件工程基础 317
10.1 软件工程基础概念 317
10.1.1 软件的概念 319
10.1.2 软件工程 320
10.1.3 软件生命周期 326
10.1.4 软件开发环境 332
10.1.5 软件开发方法 335
10.1.6 软件开发步骤 337
10.2 结构化分析方法 339
10.2.1 结构化分析方法的基础 340
10.2.2 结构化分析方法的目的 342
10.2.3 结构化分析方法优缺点 343
10.3 结构化设计方法 344
10.3.1 总体设计 345
10.3.2 详细设计 346
10.4 软件测试 347
10.4.1 软件测试的目的 347
10.4.2 软件测试的方法和技术 348
10.4.3 软件测试的实施 349
10.5 程序的调试 350
练习与思考 352
附录 358
参考文献 365