C程序设计与系统开发 / 普通高等教育十三五规划教材
¥52.00定价
作者: 祁建宏
出版时间:2020-06
出版社:中国铁道出版社
- 中国铁道出版社
- 9787113261634
- 1版
- 319824
- 62230043-2
- 平装
- 16开
- 2020-06
- 406
- 280
- 工学
- 计算机科学与技术
- TP312C
- 计算机类
- 本科
作者简介
内容简介
本书是普通高等教育“十三五”规划教材,在编写过程中,采用“案例教学法”,将烦琐而抽象的语法规则融入具体的例子当中,便于读者理解和掌握相关知识点。
本书注重培养学生综合运用相关知识解决实际问题的能力,内容包括:算法及其描述方法、程序设计基础、数组及字符串、复杂数据类型、指针、函数、文件、系统开发与链表、位运算和预处理。本书注重应用性和实践性,通过一些典型案例的解析,可进一步加强学生对C语言的理解,培养学生综合运用相关知识解决实际问题的能力。
本书适合作为普通高等院校计算机相关专业的教材,也可作为社会培训班及C程序爱好者的参考用书。
本书注重培养学生综合运用相关知识解决实际问题的能力,内容包括:算法及其描述方法、程序设计基础、数组及字符串、复杂数据类型、指针、函数、文件、系统开发与链表、位运算和预处理。本书注重应用性和实践性,通过一些典型案例的解析,可进一步加强学生对C语言的理解,培养学生综合运用相关知识解决实际问题的能力。
本书适合作为普通高等院校计算机相关专业的教材,也可作为社会培训班及C程序爱好者的参考用书。
目录
第1 章 算法及其描述方法 ....................................................................... 1
1.1 为什么要编写程序 ................................................................ 1
1.2 算法的概念及基本特征 ......................................................... 2
1.3 结构化程序设计方法 ............................................................ 3
1.4 算法的几种描述方法 ............................................................ 5
1.4.1 自然语言 ........................................................................5
1.4.2 流程图 ............................................................................5
1.4.3 N-S 图 ...........................................................................6
1.4.4 计算机语言 .....................................................................7
1.4.5 伪代码 ............................................................................9
1.5 C 语言简介 ........................................................................10
1.6 C 语言程序上机调试过程 .....................................................11
1.6.1 C 语言程序的编制运行过程 ............................................ 11
1.6.2 VC 6.0 的启动 ............................................................... 12
1.6.3 VC 6.0 的关闭 ............................................................... 12
1.6.4 VC 6.0 中新程序的建立及调试运行 ................................. 12
1.6.5 当前源程序及相关环境的关闭 ......................................... 15
1.6.6 已存在的程序文件的打开及运行 ..................................... 15
习题 .........................................................................................16
第2 章 程序设计基础............................................................................. 18
2.1 信息处理流程及其在C 语言中的基本实现方法 .......................18
2.1.1 信息处理流程概述 ......................................................... 18
2.1.2 数据的输入、存储、加工处理及输出流程示例 .................. 19
2.2 顺序结构程序设计..............................................................22
2.3 格式化输出及输入函数 ........................................................24
2.3.1 格式化输出函数printf() .................................................. 24
2.3.2 格式化输入函数scanf() ................................................. 27
2.4 选择结构程序设计..............................................................27
2.5 循环结构程序设计 ..............................................................36
2.6 三种控制结构的综合应用 .....................................................44
2.7 标识符及其命名规则...........................................................57
2.8 常量、变量及数据类型 ........................................................58
2.8.1 变量 ............................................................................. 58
2.8.2 数据类型 ...................................................................... 59
2.8.3 常量 ............................................................................. 61
2.9 运算符及其优先级和结合性 ..................................................61
目 录CONTENTS
2.9.1 运算符的优先级及结合性概述 ......................................... 61
2.9.2 常见运算符及其相关说明 ............................................... 63
2.9.3 有关结合性的解释 ......................................................... 65
2.10 不同类型数据间的转换与运算 .............................................66
2.10.1 隐式自动转换 .............................................................. 66
2.10.2 显式强制转换 .............................................................. 68
习题 .........................................................................................69
第3 章 数组及字符串............................................................................. 74
3.1 一维数组 ...........................................................................74
3.1.1 一维数组的定义............................................................. 74
3.1.2 一维数组元素的引用 ...................................................... 75
3.1.3 一维数组的初始化 ......................................................... 76
3.2 二维及多维数组..................................................................87
3.2.1 二维数组的定义 ............................................................ 87
3.2.2 多维数组 ...................................................................... 92
3.3 字符串 ..............................................................................92
3.3.1 字符串的本质 ................................................................ 92
3.3.2 字符数组 ...................................................................... 93
3.3.3 常用字符串操作函数 ...................................................... 93
3.3.4 字符串应用举例 ............................................................ 96
习题 .........................................................................................98
第4 章 复杂数据类型........................................................................... 100
4.1 C 语言中的复杂数据类型概述 .............................................100
4.2 结构体 ............................................................................100
4.2.1 结构体类型的定义 ....................................................... 101
4.2.2 结构体变量的定义 ....................................................... 102
4.2.3 结构体变量的引用 ....................................................... 104
4.2.4 结构体变量的赋值 ....................................................... 104
4.3 共用体............................................................................108
4.3.1 共用体类型的定义 ....................................................... 109
4.3.2 共用体变量的定义 ....................................................... 110
4.3.3 共用体变量的引用 ....................................................... 111
4.3.4 共用体变量的赋值....................................................... 112
4.4 枚举类型 .........................................................................115
4.4.1 枚举类型的定义 .......................................................... 116
4.4.2 枚举型变量的定义....................................................... 116
4.4.3 枚举型变量的赋值 ....................................................... 116
4.4.4 枚举类型有关说明 ....................................................... 116
习题 .......................................................................................119
第5 章 指 针.................................................................................. 121
5.1 C 语言中的指针概述 .........................................................121
5.1.1 指针与指针变量........................................................... 121
5.1.2 指针相关运算.............................................................. 125
5.2 指针与数组的关系 ............................................................126
5.2.1 数组的指针与指向一维数组元素的指针变量 ................... 126
5.2.2 一维数组与指针变量的关系 .......................................... 126
5.2.3 指向指针的指针变量 .................................................... 128
5.2.4 指针数组——元素类型为指针的数组 ............................. 128
5.2.5 指针数组与指向指针的指针变量的关系.......................... 129
5.2.6 二维数组与指针变量的关系 .......................................... 131
5.3 指针与动态内存分配.........................................................135
5.3.1 C 语言内存管理概述 .................................................... 136
5.3.2 内存空间的动态分配 .................................................... 137
5.3.3 动态释放内存.............................................................. 138
5.3.4 动态内存分配的几种不同情形....................................... 138
5.3.5 常见内存错误及其对策................................................. 142
5.4 指针与字符串...................................................................142
5.4.1 用C 语言处理字符串的两种不同形式 ............................ 143
5.4.2 字符型指针变量与字符型数组....................................... 144
习题 .......................................................................................145
第6 章 函 数.................................................................................. 146
6.1 C 语言函数简介................................................................146
6.1.1 函数的概念、分类 ....................................................... 146
6.1.2 标准函数的使用........................................................... 146
6.2 自定义函数 ......................................................................148
6.2.1 自定义函数概述........................................................... 148
6.2.2 自定义函数的一般定义形式 .......................................... 150
6.2.3 自定义函数的调用 ....................................................... 150
6.2.4 模块化程序设计 .......................................................... 153
6.3 函数中参数的传递方式 ......................................................155
6.3.1 按值传送 .................................................................... 156
6.3.2 按地址传送 ................................................................. 156
6.3.3 两种不同参数传递方式的选择 ....................................... 157
6.4 变量的作用域、生存期及存储类型 ......................................158
6.4.1 变量的作用域 .............................................................. 158
6.4.2 变量的生存期 .............................................................. 158
6.4.3 局部变量 .................................................................... 158
6.4.4 全局变量 .................................................................... 160
6.4.5 文件变量.................................................................... 161
6.4.6 变量的存储类型 .......................................................... 162
6.4.7 auto 存储类型的变量与作用范围 ................................... 162
6.4.8 static 存储类型的变量与作用范围 ................................. 162
6.4.9 register 存储类型的变量与作用范围 .............................. 163
6.4.10 extern 存储类型的变量与作用范围 .............................. 164
6.4.11 外部变量在多文件系统中的应用 .................................. 166
6.4.12 变量作用域、生存期及存储类型小结 ........................... 167
6.5 函数的嵌套与递归调用 ......................................................168
6.5.1 函数的嵌套调用 ........................................................... 168
6.5.2 函数的递归调用........................................................... 168
习题 .......................................................................................172
第7 章 文 件 .................................................................................. 173
7.1 文件概述 .........................................................................173
7.1.1 文件的概念 ................................................................. 173
7.1.2 文件的分类 ................................................................. 173
7.2 文件操作 .........................................................................175
7.2.1 文件指针 .................................................................... 176
7.2.2 文件操作基本步骤示例 ................................................ 176
7.3 文件操作相关函数 ............................................................178
7.3.1 文件的打开:fopen() 函数 ............................................. 178
7.3.2 文件的关闭:fclose() 函数 ............................................. 179
7.3.3 文件格式化输出函数:fprintf() ....................................... 180
7.3.4 文件格式化输入函数:fscanf()....................................... 180
7.3.5 判断是否到文件尾函数:feof() ....................................... 180
7.3.6 文件数据块读/ 写函数:fread() 和fwrite() ...................... 180
7.3.7 文件内部指针的定位 .................................................... 181
7.3.8 清除文件缓冲区函数:fflush() ........................................ 184
习题 .......................................................................................186
第8 章 系统开发与链表 ....................................................................... 187
8.1 软件工程简介 ...................................................................187
8.1.1 软件工程概述 .............................................................. 187
8.1.2 软件工程中的瀑布模型 ................................................. 188
8.2 “班级基本信息管理系统”开发示例 ....................................190
8.2.1 问题的定义 ................................................................. 191
8.2.2 可行性研究 ................................................................. 191
8.2.3 需求分析 .................................................................... 191
8.2.4 系统设计(概要设计) ................................................... 192
8.2.5 详细设计 .................................................................... 193
8.2.6 编码 ........................................................................... 196
8.2.7 测试 ........................................................................... 200
8.2.8 运行及维护 ................................................................. 200
8.3 链表与系统开发................................................................201
8.3.1 问题的定义 ................................................................. 201
8.3.2 可行性研究 ................................................................. 201
8.3.3 需求分析 .................................................................... 201
8.3.4 系统设计(概要设计) ................................................... 201
8.3.5 详细设计(算法设计) ................................................... 204
8.3.6 编码 ........................................................................... 208
8.3.7 测试 ........................................................................... 214
8.3.8 运行与维护 ................................................................. 214
习题 .......................................................................................214
第9 章 位运算 ..................................................................................... 215
9.1 C 语言中的位运算 .............................................................215
9.2 位运算实际应用 ................................................................217
9.2.1 按位与、或、异或及取反 ............................................. 217
9.2.2 移位运算 .................................................................... 218
9.2.3 典型应用案例 .............................................................. 219
9.3 位域 ................................................................................222
9.3.1 位域类型定义 .............................................................. 223
9.3.2 位域变量定义 .............................................................. 224
9.3.3 位域的使用 ................................................................. 224
9.3.4 位域的空间分配 .......................................................... 225
习题 .......................................................................................226
第10 章 预处理 .................................................................................. 227
10.1 预处理简介 ....................................................................227
10.2 宏定义 ...........................................................................227
10.2.1 无参宏定义 ............................................................... 228
10.2.2 带参宏定义 ............................................................... 228
10.2.3 取消宏定义 ............................................................... 230
10.3 文件包含.......................................................................230
10.4 条件编译 .......................................................................231
习题 .......................................................................................233
附录A 学习建议 ................................................................................. 234
附录B 常见标准函数 .......................................................................... 235
附录C C 语言关键字.......................................................................... 253
附录D ASCII 码表.............................................................................. 255
附录E C 语言常见错误举例说明........................................................ 259
参考文献 ................................................................................................ 267
1.1 为什么要编写程序 ................................................................ 1
1.2 算法的概念及基本特征 ......................................................... 2
1.3 结构化程序设计方法 ............................................................ 3
1.4 算法的几种描述方法 ............................................................ 5
1.4.1 自然语言 ........................................................................5
1.4.2 流程图 ............................................................................5
1.4.3 N-S 图 ...........................................................................6
1.4.4 计算机语言 .....................................................................7
1.4.5 伪代码 ............................................................................9
1.5 C 语言简介 ........................................................................10
1.6 C 语言程序上机调试过程 .....................................................11
1.6.1 C 语言程序的编制运行过程 ............................................ 11
1.6.2 VC 6.0 的启动 ............................................................... 12
1.6.3 VC 6.0 的关闭 ............................................................... 12
1.6.4 VC 6.0 中新程序的建立及调试运行 ................................. 12
1.6.5 当前源程序及相关环境的关闭 ......................................... 15
1.6.6 已存在的程序文件的打开及运行 ..................................... 15
习题 .........................................................................................16
第2 章 程序设计基础............................................................................. 18
2.1 信息处理流程及其在C 语言中的基本实现方法 .......................18
2.1.1 信息处理流程概述 ......................................................... 18
2.1.2 数据的输入、存储、加工处理及输出流程示例 .................. 19
2.2 顺序结构程序设计..............................................................22
2.3 格式化输出及输入函数 ........................................................24
2.3.1 格式化输出函数printf() .................................................. 24
2.3.2 格式化输入函数scanf() ................................................. 27
2.4 选择结构程序设计..............................................................27
2.5 循环结构程序设计 ..............................................................36
2.6 三种控制结构的综合应用 .....................................................44
2.7 标识符及其命名规则...........................................................57
2.8 常量、变量及数据类型 ........................................................58
2.8.1 变量 ............................................................................. 58
2.8.2 数据类型 ...................................................................... 59
2.8.3 常量 ............................................................................. 61
2.9 运算符及其优先级和结合性 ..................................................61
目 录CONTENTS
2.9.1 运算符的优先级及结合性概述 ......................................... 61
2.9.2 常见运算符及其相关说明 ............................................... 63
2.9.3 有关结合性的解释 ......................................................... 65
2.10 不同类型数据间的转换与运算 .............................................66
2.10.1 隐式自动转换 .............................................................. 66
2.10.2 显式强制转换 .............................................................. 68
习题 .........................................................................................69
第3 章 数组及字符串............................................................................. 74
3.1 一维数组 ...........................................................................74
3.1.1 一维数组的定义............................................................. 74
3.1.2 一维数组元素的引用 ...................................................... 75
3.1.3 一维数组的初始化 ......................................................... 76
3.2 二维及多维数组..................................................................87
3.2.1 二维数组的定义 ............................................................ 87
3.2.2 多维数组 ...................................................................... 92
3.3 字符串 ..............................................................................92
3.3.1 字符串的本质 ................................................................ 92
3.3.2 字符数组 ...................................................................... 93
3.3.3 常用字符串操作函数 ...................................................... 93
3.3.4 字符串应用举例 ............................................................ 96
习题 .........................................................................................98
第4 章 复杂数据类型........................................................................... 100
4.1 C 语言中的复杂数据类型概述 .............................................100
4.2 结构体 ............................................................................100
4.2.1 结构体类型的定义 ....................................................... 101
4.2.2 结构体变量的定义 ....................................................... 102
4.2.3 结构体变量的引用 ....................................................... 104
4.2.4 结构体变量的赋值 ....................................................... 104
4.3 共用体............................................................................108
4.3.1 共用体类型的定义 ....................................................... 109
4.3.2 共用体变量的定义 ....................................................... 110
4.3.3 共用体变量的引用 ....................................................... 111
4.3.4 共用体变量的赋值....................................................... 112
4.4 枚举类型 .........................................................................115
4.4.1 枚举类型的定义 .......................................................... 116
4.4.2 枚举型变量的定义....................................................... 116
4.4.3 枚举型变量的赋值 ....................................................... 116
4.4.4 枚举类型有关说明 ....................................................... 116
习题 .......................................................................................119
第5 章 指 针.................................................................................. 121
5.1 C 语言中的指针概述 .........................................................121
5.1.1 指针与指针变量........................................................... 121
5.1.2 指针相关运算.............................................................. 125
5.2 指针与数组的关系 ............................................................126
5.2.1 数组的指针与指向一维数组元素的指针变量 ................... 126
5.2.2 一维数组与指针变量的关系 .......................................... 126
5.2.3 指向指针的指针变量 .................................................... 128
5.2.4 指针数组——元素类型为指针的数组 ............................. 128
5.2.5 指针数组与指向指针的指针变量的关系.......................... 129
5.2.6 二维数组与指针变量的关系 .......................................... 131
5.3 指针与动态内存分配.........................................................135
5.3.1 C 语言内存管理概述 .................................................... 136
5.3.2 内存空间的动态分配 .................................................... 137
5.3.3 动态释放内存.............................................................. 138
5.3.4 动态内存分配的几种不同情形....................................... 138
5.3.5 常见内存错误及其对策................................................. 142
5.4 指针与字符串...................................................................142
5.4.1 用C 语言处理字符串的两种不同形式 ............................ 143
5.4.2 字符型指针变量与字符型数组....................................... 144
习题 .......................................................................................145
第6 章 函 数.................................................................................. 146
6.1 C 语言函数简介................................................................146
6.1.1 函数的概念、分类 ....................................................... 146
6.1.2 标准函数的使用........................................................... 146
6.2 自定义函数 ......................................................................148
6.2.1 自定义函数概述........................................................... 148
6.2.2 自定义函数的一般定义形式 .......................................... 150
6.2.3 自定义函数的调用 ....................................................... 150
6.2.4 模块化程序设计 .......................................................... 153
6.3 函数中参数的传递方式 ......................................................155
6.3.1 按值传送 .................................................................... 156
6.3.2 按地址传送 ................................................................. 156
6.3.3 两种不同参数传递方式的选择 ....................................... 157
6.4 变量的作用域、生存期及存储类型 ......................................158
6.4.1 变量的作用域 .............................................................. 158
6.4.2 变量的生存期 .............................................................. 158
6.4.3 局部变量 .................................................................... 158
6.4.4 全局变量 .................................................................... 160
6.4.5 文件变量.................................................................... 161
6.4.6 变量的存储类型 .......................................................... 162
6.4.7 auto 存储类型的变量与作用范围 ................................... 162
6.4.8 static 存储类型的变量与作用范围 ................................. 162
6.4.9 register 存储类型的变量与作用范围 .............................. 163
6.4.10 extern 存储类型的变量与作用范围 .............................. 164
6.4.11 外部变量在多文件系统中的应用 .................................. 166
6.4.12 变量作用域、生存期及存储类型小结 ........................... 167
6.5 函数的嵌套与递归调用 ......................................................168
6.5.1 函数的嵌套调用 ........................................................... 168
6.5.2 函数的递归调用........................................................... 168
习题 .......................................................................................172
第7 章 文 件 .................................................................................. 173
7.1 文件概述 .........................................................................173
7.1.1 文件的概念 ................................................................. 173
7.1.2 文件的分类 ................................................................. 173
7.2 文件操作 .........................................................................175
7.2.1 文件指针 .................................................................... 176
7.2.2 文件操作基本步骤示例 ................................................ 176
7.3 文件操作相关函数 ............................................................178
7.3.1 文件的打开:fopen() 函数 ............................................. 178
7.3.2 文件的关闭:fclose() 函数 ............................................. 179
7.3.3 文件格式化输出函数:fprintf() ....................................... 180
7.3.4 文件格式化输入函数:fscanf()....................................... 180
7.3.5 判断是否到文件尾函数:feof() ....................................... 180
7.3.6 文件数据块读/ 写函数:fread() 和fwrite() ...................... 180
7.3.7 文件内部指针的定位 .................................................... 181
7.3.8 清除文件缓冲区函数:fflush() ........................................ 184
习题 .......................................................................................186
第8 章 系统开发与链表 ....................................................................... 187
8.1 软件工程简介 ...................................................................187
8.1.1 软件工程概述 .............................................................. 187
8.1.2 软件工程中的瀑布模型 ................................................. 188
8.2 “班级基本信息管理系统”开发示例 ....................................190
8.2.1 问题的定义 ................................................................. 191
8.2.2 可行性研究 ................................................................. 191
8.2.3 需求分析 .................................................................... 191
8.2.4 系统设计(概要设计) ................................................... 192
8.2.5 详细设计 .................................................................... 193
8.2.6 编码 ........................................................................... 196
8.2.7 测试 ........................................................................... 200
8.2.8 运行及维护 ................................................................. 200
8.3 链表与系统开发................................................................201
8.3.1 问题的定义 ................................................................. 201
8.3.2 可行性研究 ................................................................. 201
8.3.3 需求分析 .................................................................... 201
8.3.4 系统设计(概要设计) ................................................... 201
8.3.5 详细设计(算法设计) ................................................... 204
8.3.6 编码 ........................................................................... 208
8.3.7 测试 ........................................................................... 214
8.3.8 运行与维护 ................................................................. 214
习题 .......................................................................................214
第9 章 位运算 ..................................................................................... 215
9.1 C 语言中的位运算 .............................................................215
9.2 位运算实际应用 ................................................................217
9.2.1 按位与、或、异或及取反 ............................................. 217
9.2.2 移位运算 .................................................................... 218
9.2.3 典型应用案例 .............................................................. 219
9.3 位域 ................................................................................222
9.3.1 位域类型定义 .............................................................. 223
9.3.2 位域变量定义 .............................................................. 224
9.3.3 位域的使用 ................................................................. 224
9.3.4 位域的空间分配 .......................................................... 225
习题 .......................................................................................226
第10 章 预处理 .................................................................................. 227
10.1 预处理简介 ....................................................................227
10.2 宏定义 ...........................................................................227
10.2.1 无参宏定义 ............................................................... 228
10.2.2 带参宏定义 ............................................................... 228
10.2.3 取消宏定义 ............................................................... 230
10.3 文件包含.......................................................................230
10.4 条件编译 .......................................................................231
习题 .......................................................................................233
附录A 学习建议 ................................................................................. 234
附录B 常见标准函数 .......................................................................... 235
附录C C 语言关键字.......................................................................... 253
附录D ASCII 码表.............................................................................. 255
附录E C 语言常见错误举例说明........................................................ 259
参考文献 ................................................................................................ 267