
作者:张卫国
页数:328
出版社:西安电子科技大学出版社
出版日期:2021
ISBN:9787560659527
电子书格式:pdf/epub/txt
内容简介
本书是编者在多年教学改革试点的基础上,采用案例驱动式教学方式编写的。本书基于C/C++的特点,从面向问题出发,给出了大量实用教学案例,引导学生进行基础知识的学习,注重培养学生程序设计的思维方式和技巧,可为其学习后续课程打下扎实的基础。本书共12章。前8章主要介绍C语言相关的基础知识和程序设计方法,其目的是使学生能迅速了解和掌握C语言的简单运用。这部分内容包括:C/C++?语言程序设计概述、数据类型和表达式、控制结构、数组、函数、指针、结构体、编译预处理、文件等。后4章主要介绍C++?语言面向对象程序设计的主要概念、方法和应用。这部分内容包括:类与对象、静态成员、友元、运算符重载、继承和多态、模板等。本书适合作为高等院校“C/C++?语言程序设计”课程的教材,也适合作为程序设计初学者自学用书和成.人教育及在职人员的培训用书,还适合作为全国计算机等级考试应试者的参考书。
本书特色
本书属于C/C++语言程序设计案例式教材。作者基于C/C++的特点,从面向问题出发,给出了大量实用教学案例,引导学生进行程序设计基础知识的学习。书稿内容设计注重培养读者程序设计的思维方式和程序设计技巧。
目录
第一章 程序设计概述 1
1.1 C/C++ 语言的起源与发展 1
1.1.1 计算机语言及发展 1
1.1.2 C语言及其特点 2
1.1.3 从C到C++ 3
1.2 程序设计方法 4
1.2.1 结构化的程序设计方法 4
1.2.2 面向对象的程序设计方法 7
1.3 C/C++ 语言程序的结构 9
1.3.1 C语言程序实例 9
1.3.2 C++ 程序实例 11
1.4 C/C++ 语言程序上机实践 12
本章小结 17
习题一 17
第二章 数据类型和表达式 18
案例一 数据类型的定义和使用 18
2.1 词法构成 19
2.1.1 字符集 19
2.1.2 标识符 21
2.1.3 关键字 21
2.1.4 注释符 22
2.2 数据类型 22
2.2.1 整数类型 23
2.2.2 实数类型 24
2.2.3 字符类型 25
2.3 常量与变量 26
2.3.1 常量 26
2.3.2 变量 28
案例二 指针变量的定义与使用 29
2.4 指针类型 30
2.4.1 指针的概念 30
2.4.2 指针变量的定义 32
案例三 运算符和表达式的使用 34
2.5 运算符和表达式 35
2.5.1 运算符和表达式概述 36
2.5.2 算术运算符和算术表达式 38
2.5.3 关系运算符和关系表达式 40
2.5.4 逻辑运算符和逻辑表达式 41
2.5.5 条件运算符和条件表达式 42
2.5.6 逗号运算符和逗号表达式 43
2.5.7 赋值运算符和赋值表达式 43
2.5.8 位运算符和位运算表达式 44
2.5.9 其他运算表达式 47
2.5.10 表达式的类型转换 48
本章小结 50
习题二 50
第三章 程序设计基础 52
案例一 计算圆的周长和面积 52
3.1 算法与流程 53
3.1.1 算法的特性 53
3.1.2 算法的表示形式 53
3.1.3 C语言语句概述 54
案例二 格式输入输出函数 54
3.2 数据的输入与输出 55
3.2.1 printf()函数 55
3.2.2 scanf( )函数 60
3.2.3 字符输入输出函数 62
案例三 交换两个整型变量的值 63
3.3 顺序结构程序设计 64
案例四 计算y=|x| 67
3.4 选择结构的程序设计 68
3.4.1 if语句及其三种基本形式 68
3.4.2 if语句的嵌套结构 70
3.4.3 switch语句(开关语句) 72
3.4.4 选择结构程序举例 75
案例五 计算1~100的累加和 77
3.5 循环结构的程序设计 78
3.5.1 while语句 79
3.5.2 do-while 语句 79
3.5.3 for语句 80
案例六 在屏幕上输出下三角的九九乘法表 83
3.5.4 循环结构的嵌套 84
案例七 输入两个正整数,计算并输出它们的
最大公约数 85
3.5.5 与循环相关的语句(break、continue、
goto) 86
3.5.6 循环结构程序举例 88
本章小结 90
习题三 91
第四章 数组 98
案例一 统计学生成绩 98
4.1 一维数组基础知识 99
4.1.1 数组的概念 99
4.1.2 一维数组的定义 100
4.1.3 一维数组的引用 100
4.1.4 一维数组的初始化 101
4.1.5 一维数组的访问 102
案例二 计算机技能大赛 102
4.2 一维数组排序 103
案例三 矩阵的存储与计算 105
4.3 二维数组基础知识 106
4.3.1 二维数组的概念 106
4.3.2 二维数组的定义 107
4.3.3 二维数组的引用 107
4.3.4 二维数组元素的初始化 108
4.3.5 二维数组的访问 109
案例四 逆转字符串 109
4.4 字符数组与字符串 110
4.4.1 字符数组 110
4.4.2 字符串 111
案例五 在指定位置插入字符 112
案例六 字符串比较 113
4.5 字符串处理函数 114
案例七 用指针实现对数组的操作 115
4.6 一维数组与指针 117
4.6.1 指针运算 117
4.6.2 指向一维数组的指针 118
案例八 数据表的建立与操作 120
4.7 二维数组与指针 122
案例九 点名册 123
4.8 指针数组与二级指针 125
4.8.1 指针数组 125
4.8.2 二级指针 126
本章小结 127
习题四 127
第五章 模块化程序设计 131
案例一 四则运算器 131
5.1 函数的基本概念和操作 133
5.1.1 函数的概念 133
5.1.2 函数的定义 133
5.1.3 函数的调用与函数说明 135
案例二 阶乘之和 137
5.2 函数的嵌套调用和递归调用 138
5.2.1 函数的嵌套调用 138
5.2.2 函数的递归调用 139
案例三 值传递与地址传递 141
5.3 函数间数据传递 142
5.3.1 传值方式传递数据 143
5.3.2 传地址方式传递数据 144
案例五 远水不救近火 145
5.4 变量的作用域与存储方式 146
5.4.1 变量的作用域 146
5.4.2 变量的存储类别 149
案例六 查找子串 151
5.5 指针函数与函数指针 152
5.5.1 指针函数 152
案例七 函数指针实现四则运算 153
5.5.2 函数指针 154
本章小结 155
习题五 155
第六章 结构体和共用体 160
案例一 完成学生基本信息的保存并输出 160
6.1 结构体类型与结构体变量 161
6.1.1 结构体类型与结构体变量的定义 161
6.1.2 结构体变量的使用 163
案例二 结构体数组的使用 164
6.2 结构体数组 165
6.2.1 结构体数组定义 165
6.2.2 结构体数组的使用 165
案例三 指向结构体类型数组指针的使用 166
6.3 结构体与指针 168
6.3.1 指向结构体变量的指针 168
6.3.2 指向结构体类型数组的指针 169
案例四 结构体函数的使用 170
6.4 结构体与函数 171
6.4.1 指向结构体变量的指针作为
函数参数 172
6.4.2 结构体变量作为函数的返回值 172
案例五 共用体变量设计与使用 174
6.5 共用体 175
6.5.1 共用体类型的定义 176
6.5.2 共用体变量的定义 176
6.5.3 共用体变量的引用 177
6.6 枚举类型 178
6.7 类型定义语句typedef 180
本章小结 181
习题六 182
第七章 编译预处理 184
案例一 宏的使用 184
7.1 宏定义 185
7.1.1 不带参数的宏定义 185
7.1.2 带参数的宏定义 186
案例二 文件包含的使用 188
7.2 文件包含 189
案例三 #ifdef命令和#ifndef命令的使用 190
7.3 条件编译 191
本章小结 193
习题七 193
第八章 数据的磁盘存储 196
案例一 文件读写函数的使用1 196
8.1 文件概述 198
案例二 文件读写函数的使用2 199
8.2 文件的打开与关闭 201
8.2.1 文件类型指针 201
8.2.2 文件的打开与关闭 201
案例三 文件读写函数的使用3 203
8.3 文件的读写 206
8.3.1 文件读写函数 206
8.3.2 格式化读写函数 210
8.4 文件的定位 211
8.5 出错的检测 212
本章小结 213
习题八 213
第九章 类与对象 215
9.1 C++ 对C的改进 215
9.1.1 常规的改进 215
9.1.2 C++的动态内存分配 218
9.1.3 引用 220
9.1.4 C++ 中的函数 222
9.2 C++ 的输入与输出 225
9.2.1 C++ 的流类结构 226
9.2.2 格式化I/O 226
案例一 学生类设计 230
9.3 类与对象的概念 234
9.3.1 类的定义 234
9.3.2 数据成员和成员函数 234
9.3.3 对象 235
9.4 构造函数和析构函数 237
9.4.1 构造函数 237
9.4.2 复制构造函数 239
9.4.3 析构函数 242
9.5 静态成员 243
案例二 点和圆类设计 244
9.6 组合类的对象及其构造函数和析构
函数的调用 247
案例三 教师和学生类的设计和使用 249
9.7 友元与类的前向引用 250
9.7.1 友元函数 251
9.7.2 友元成员 253
9.7.3 友元类 254
9.7.4 类的前向引用声明 256
本章小结 256
习题九 256
第十章 继承性与派生类 258
案例一 雇员类设计 258
10.1 类的继承与派生 263
10.1.1 继承与派生的概念 263
10.1.2 派生类的声明 265
10.2 派生类的构造函数和析构函数 271
10.2.1 构造和析构的次序 271
10.2.2 派生类构造函数和析构函数的
构造规则 272
10.3 多重继承 275
10.3.1 多重继承的声明 275
10.3.2 多重继承的构造函数 277
10.4 虚基类 278
10.4.1 虚基类及其使用的原因 278
10.4.2 虚基类的定义 279
10.4.3 虚基类的初始化 280
本章小结 282
习题十 282
第十一章 多态性与虚函数 284
案例一 函数重载 284
11.1 多态性概述 285
11.2 函数重载 285
案例二 运算符重载 286
11.3 运算符重载 287
11.3.1 运算符重载的规则 287
11.3.2 运算符重载为成员函数 288
11.3.3 运算符重载为友元函数 291
11.3.4 “++”和“–”的重载 294
案例三 虚函数使用 296
11.4 虚函数 298
11.4.1 引入派生类后的对象指针 298
11.4.2 虚函数的定义及使用 299
11.4.3 虚析构函数 301
案例四 纯虚函数与抽象类 303
11.5 纯虚函数与抽象类 304
本章小结 306
习题十一 306
第十二章 模板 308
案例一 选择排序模板 308
12.1 函数模板 310
案例二 对象数组类定义 313
12.2 类模板 316
本章小结 318
习题十二 319
参考文献 320
1.1 C/C++ 语言的起源与发展 1
1.1.1 计算机语言及发展 1
1.1.2 C语言及其特点 2
1.1.3 从C到C++ 3
1.2 程序设计方法 4
1.2.1 结构化的程序设计方法 4
1.2.2 面向对象的程序设计方法 7
1.3 C/C++ 语言程序的结构 9
1.3.1 C语言程序实例 9
1.3.2 C++ 程序实例 11
1.4 C/C++ 语言程序上机实践 12
本章小结 17
习题一 17
第二章 数据类型和表达式 18
案例一 数据类型的定义和使用 18
2.1 词法构成 19
2.1.1 字符集 19
2.1.2 标识符 21
2.1.3 关键字 21
2.1.4 注释符 22
2.2 数据类型 22
2.2.1 整数类型 23
2.2.2 实数类型 24
2.2.3 字符类型 25
2.3 常量与变量 26
2.3.1 常量 26
2.3.2 变量 28
案例二 指针变量的定义与使用 29
2.4 指针类型 30
2.4.1 指针的概念 30
2.4.2 指针变量的定义 32
案例三 运算符和表达式的使用 34
2.5 运算符和表达式 35
2.5.1 运算符和表达式概述 36
2.5.2 算术运算符和算术表达式 38
2.5.3 关系运算符和关系表达式 40
2.5.4 逻辑运算符和逻辑表达式 41
2.5.5 条件运算符和条件表达式 42
2.5.6 逗号运算符和逗号表达式 43
2.5.7 赋值运算符和赋值表达式 43
2.5.8 位运算符和位运算表达式 44
2.5.9 其他运算表达式 47
2.5.10 表达式的类型转换 48
本章小结 50
习题二 50
第三章 程序设计基础 52
案例一 计算圆的周长和面积 52
3.1 算法与流程 53
3.1.1 算法的特性 53
3.1.2 算法的表示形式 53
3.1.3 C语言语句概述 54
案例二 格式输入输出函数 54
3.2 数据的输入与输出 55
3.2.1 printf()函数 55
3.2.2 scanf( )函数 60
3.2.3 字符输入输出函数 62
案例三 交换两个整型变量的值 63
3.3 顺序结构程序设计 64
案例四 计算y=|x| 67
3.4 选择结构的程序设计 68
3.4.1 if语句及其三种基本形式 68
3.4.2 if语句的嵌套结构 70
3.4.3 switch语句(开关语句) 72
3.4.4 选择结构程序举例 75
案例五 计算1~100的累加和 77
3.5 循环结构的程序设计 78
3.5.1 while语句 79
3.5.2 do-while 语句 79
3.5.3 for语句 80
案例六 在屏幕上输出下三角的九九乘法表 83
3.5.4 循环结构的嵌套 84
案例七 输入两个正整数,计算并输出它们的
最大公约数 85
3.5.5 与循环相关的语句(break、continue、
goto) 86
3.5.6 循环结构程序举例 88
本章小结 90
习题三 91
第四章 数组 98
案例一 统计学生成绩 98
4.1 一维数组基础知识 99
4.1.1 数组的概念 99
4.1.2 一维数组的定义 100
4.1.3 一维数组的引用 100
4.1.4 一维数组的初始化 101
4.1.5 一维数组的访问 102
案例二 计算机技能大赛 102
4.2 一维数组排序 103
案例三 矩阵的存储与计算 105
4.3 二维数组基础知识 106
4.3.1 二维数组的概念 106
4.3.2 二维数组的定义 107
4.3.3 二维数组的引用 107
4.3.4 二维数组元素的初始化 108
4.3.5 二维数组的访问 109
案例四 逆转字符串 109
4.4 字符数组与字符串 110
4.4.1 字符数组 110
4.4.2 字符串 111
案例五 在指定位置插入字符 112
案例六 字符串比较 113
4.5 字符串处理函数 114
案例七 用指针实现对数组的操作 115
4.6 一维数组与指针 117
4.6.1 指针运算 117
4.6.2 指向一维数组的指针 118
案例八 数据表的建立与操作 120
4.7 二维数组与指针 122
案例九 点名册 123
4.8 指针数组与二级指针 125
4.8.1 指针数组 125
4.8.2 二级指针 126
本章小结 127
习题四 127
第五章 模块化程序设计 131
案例一 四则运算器 131
5.1 函数的基本概念和操作 133
5.1.1 函数的概念 133
5.1.2 函数的定义 133
5.1.3 函数的调用与函数说明 135
案例二 阶乘之和 137
5.2 函数的嵌套调用和递归调用 138
5.2.1 函数的嵌套调用 138
5.2.2 函数的递归调用 139
案例三 值传递与地址传递 141
5.3 函数间数据传递 142
5.3.1 传值方式传递数据 143
5.3.2 传地址方式传递数据 144
案例五 远水不救近火 145
5.4 变量的作用域与存储方式 146
5.4.1 变量的作用域 146
5.4.2 变量的存储类别 149
案例六 查找子串 151
5.5 指针函数与函数指针 152
5.5.1 指针函数 152
案例七 函数指针实现四则运算 153
5.5.2 函数指针 154
本章小结 155
习题五 155
第六章 结构体和共用体 160
案例一 完成学生基本信息的保存并输出 160
6.1 结构体类型与结构体变量 161
6.1.1 结构体类型与结构体变量的定义 161
6.1.2 结构体变量的使用 163
案例二 结构体数组的使用 164
6.2 结构体数组 165
6.2.1 结构体数组定义 165
6.2.2 结构体数组的使用 165
案例三 指向结构体类型数组指针的使用 166
6.3 结构体与指针 168
6.3.1 指向结构体变量的指针 168
6.3.2 指向结构体类型数组的指针 169
案例四 结构体函数的使用 170
6.4 结构体与函数 171
6.4.1 指向结构体变量的指针作为
函数参数 172
6.4.2 结构体变量作为函数的返回值 172
案例五 共用体变量设计与使用 174
6.5 共用体 175
6.5.1 共用体类型的定义 176
6.5.2 共用体变量的定义 176
6.5.3 共用体变量的引用 177
6.6 枚举类型 178
6.7 类型定义语句typedef 180
本章小结 181
习题六 182
第七章 编译预处理 184
案例一 宏的使用 184
7.1 宏定义 185
7.1.1 不带参数的宏定义 185
7.1.2 带参数的宏定义 186
案例二 文件包含的使用 188
7.2 文件包含 189
案例三 #ifdef命令和#ifndef命令的使用 190
7.3 条件编译 191
本章小结 193
习题七 193
第八章 数据的磁盘存储 196
案例一 文件读写函数的使用1 196
8.1 文件概述 198
案例二 文件读写函数的使用2 199
8.2 文件的打开与关闭 201
8.2.1 文件类型指针 201
8.2.2 文件的打开与关闭 201
案例三 文件读写函数的使用3 203
8.3 文件的读写 206
8.3.1 文件读写函数 206
8.3.2 格式化读写函数 210
8.4 文件的定位 211
8.5 出错的检测 212
本章小结 213
习题八 213
第九章 类与对象 215
9.1 C++ 对C的改进 215
9.1.1 常规的改进 215
9.1.2 C++的动态内存分配 218
9.1.3 引用 220
9.1.4 C++ 中的函数 222
9.2 C++ 的输入与输出 225
9.2.1 C++ 的流类结构 226
9.2.2 格式化I/O 226
案例一 学生类设计 230
9.3 类与对象的概念 234
9.3.1 类的定义 234
9.3.2 数据成员和成员函数 234
9.3.3 对象 235
9.4 构造函数和析构函数 237
9.4.1 构造函数 237
9.4.2 复制构造函数 239
9.4.3 析构函数 242
9.5 静态成员 243
案例二 点和圆类设计 244
9.6 组合类的对象及其构造函数和析构
函数的调用 247
案例三 教师和学生类的设计和使用 249
9.7 友元与类的前向引用 250
9.7.1 友元函数 251
9.7.2 友元成员 253
9.7.3 友元类 254
9.7.4 类的前向引用声明 256
本章小结 256
习题九 256
第十章 继承性与派生类 258
案例一 雇员类设计 258
10.1 类的继承与派生 263
10.1.1 继承与派生的概念 263
10.1.2 派生类的声明 265
10.2 派生类的构造函数和析构函数 271
10.2.1 构造和析构的次序 271
10.2.2 派生类构造函数和析构函数的
构造规则 272
10.3 多重继承 275
10.3.1 多重继承的声明 275
10.3.2 多重继承的构造函数 277
10.4 虚基类 278
10.4.1 虚基类及其使用的原因 278
10.4.2 虚基类的定义 279
10.4.3 虚基类的初始化 280
本章小结 282
习题十 282
第十一章 多态性与虚函数 284
案例一 函数重载 284
11.1 多态性概述 285
11.2 函数重载 285
案例二 运算符重载 286
11.3 运算符重载 287
11.3.1 运算符重载的规则 287
11.3.2 运算符重载为成员函数 288
11.3.3 运算符重载为友元函数 291
11.3.4 “++”和“–”的重载 294
案例三 虚函数使用 296
11.4 虚函数 298
11.4.1 引入派生类后的对象指针 298
11.4.2 虚函数的定义及使用 299
11.4.3 虚析构函数 301
案例四 纯虚函数与抽象类 303
11.5 纯虚函数与抽象类 304
本章小结 306
习题十一 306
第十二章 模板 308
案例一 选择排序模板 308
12.1 函数模板 310
案例二 对象数组类定义 313
12.2 类模板 316
本章小结 318
习题十二 319
参考文献 320















