图书简介:
第1章 C++概述 1
1.1 C++的起源 1
1.2 C++的特点 2
1.3 C++程序的基本结构 2
1.4 C++上机操作 5
1.4.1 C++程序的开发步骤 5
1.4.2 C++程序的上机操作方法 6
本章小结 9
习题 9
第2章 数据类型和表达式 11
2.1 数据类型 11
2.2 常量和变量 13
2.2.1 常量 13
2.2.2 变量 16
2.3 运算符和表达式 17
2.3.1 算术运算符和算术表达式 17
2.3.2 赋值运算符和赋值表达式 19
2.3.3 自增/自减运算符 20
2.3.4 关系运算符和关系表达式 21
2.3.5 逻辑运算符和逻辑表达式 22
2.3.6 逗号运算符和逗号表达式 23
2.3.7 复合赋值运算符 24
2.3.8 数据类型长度运算符(sizeof运算符) 24
2.4 简单的输入和输出 25
2.4.1 数据输出cout 25
2.4.2 数据输入cin 26
2.4.3 简单的输入/输出格式控制 27
本章小结 28
习题 29
实验 31
第3章 程序结构和流程控制语句 32
3.1 程序的三种基本结构和语句 32
3.1.1 程序的三种基本结构 32
3.1.2 C++程序的组成 34
3.1.3 C++程序的语句 34
3.2 分支语句 35
3.2.1 if语句 35
3.2.2 条件运算符和条件表达式 41
3.2.3 switch语句 41
3.3 循环语句 44
3.3.1 while语句 45
3.3.2 do…while语句 47
3.3.3 for语句 49
3.3.4 三种循环语句的比较 51
3.3.5 循环语句的嵌套 52
3.4 控制执行顺序的语句 53
3.4.1 break语句 53
3.4.2 continue语句 53
3.4.3 语句标号和goto语句 55
3.4.4 exit()函数和abort()函数 55
3.5 程序设计举例 56
3.5.1 分支语句应用举例 56
3.5.2 循环语句应用举例 59
本章小结 64
习题 65
实验A 68
实验B 69
第4章 数组 70
4.1 数组的定义和使用 70
4.1.1 一维数组的定义和使用 70
4.1.2 二维数组的定义和使用 77
4.2 字符数组的定义和使用 81
4.2.1 字符串和字符数组 81
4.2.2 字符串处理函数 83
4.3 数组应用举例 86
4.3.1 一维数组应用举例 86
4.3.2 二维数组应用举例 88
4.3.3 字符数组应用举例 90
本章小结 92
习题 92
实验A 95
实验B 96
第5章 函数 98
5.1 函数的定义和调用 98
5.1.1 函数的概念 98
5.1.2 函数的定义 99
5.1.3 函数的调用 100
5.1.4 实参与形参的数据传送 103
5.2 函数的嵌套调用和递归调用 104
5.2.1 函数的嵌套调用 104
5.2.2 函数的递归调用 105
5.3 数组作为函数参数 108
5.3.1 数组元素作为函数参数 108
5.3.2 数组名作为函数参数 109
5.4 变量的存储类型 112
5.4.1 作用域 112
5.4.2 局部变量与全局变量 114
5.4.3 动态变量与静态变量 115
5.4.4 存储类型 116
5.5 内联函数 121
5.6 具有默认参数值的函数 122
5.7 函数的重载 123
本章小结 124
习题 126
实验 130
第6章 编译预处理 132
6.1 文件包含处理 132
6.2 宏定义 135
6.2.1 不带参数的宏定义 135
6.2.2 带参数的宏定义 137
6.3 条件编译 139
本章小结 142
习题 142
第7章 指针 144
7.1 指针与指针变量 144
7.1.1 指针的概念 144
7.1.2 指针变量的定义与引用 145
7.1.3 指针变量的运算 146
7.2 指针与数组 151
7.2.1 一维数组与指针 151
7.2.2 二维数组与指针 152
7.2.3 字符串与指针 156
7.3 指针变量与数组作为函数参数 158
7.3.1 指针变量作为函数参数 158
7.3.2 数组与指针作为函数参数 160
7.4 指针数组 162
7.5 指向一维数组的指针变量 164
7.6 返回指针值的函数 167
7.7 函数指针变量 168
7.8 new运算符和delete运算符 172
7.8.1 new运算符 172
7.8.2 delete运算符 173
7.8.3 使用new运算符和delete运算符应注意的事项 174
7.9 引用类型变量和const类型变量 174
7.9.1 引用类型变量的定义及使用 174
7.9.2 const类型变量 176
本章小结 178
习题 181
实验A 184
实验B 184
第8章 枚举类型和结构体 186
8.1 枚举类型的定义及应用 186
8.1.1 枚举类型的定义 186
8.1.2 枚举类型变量的定义 187
8.1.3 枚举类型变量的引用 188
8.2 结构体的定义及应用 191
8.2.1 结构体的概念 191
8.2.2 结构体类型的定义 191
8.2.3 结构体变量的定义 192
8.2.4 结构体变量的引用 193
8.2.5 结构体变量与数组作为函数参数 195
8.3 链表 198
8.3.1 链表的概念 198
8.3.2 链表的基本操作 199
本章小结 207
习题 209
实验A 210
实验B 211
第9章 类和对象 212
9.1 概述 212
9.2 类与对象 213
9.2.1 类 213
9.2.2 对象 216
9.3 构造函数 219
9.3.1 构造函数的定义 219
9.3.2 用构造函数初始化对象的过程 221
9.3.3 默认构造函数 222
9.3.4 拷贝构造函数 223
9.3.5 用new运算符动态定义对象 224
9.4 析构函数 225
9.4.1 析构函数的定义 225
9.4.2 析构函数的调用 226
9.4.3 默认的析构函数 229
9.5 构造函数和对象成员 229
9.6 this指针 232
本章小结 233
习题 234
实验 237
第10章 继承和派生 238
10.1 继承与派生 238
10.1.1 继承与派生的基本概念 238
10.1.2 派生类的定义 240
10.1.3 派生类的构造函数与基类成员的初始化 242
10.2 冲突、支配规则和赋值兼容规则 246
10.2.1 冲突 246
10.2.2 支配规则 249
10.2.3 赋值兼容规则 250
10.2.4 基类和对象成员的几点说明 250
10.3 虚基类 250
10.3.1 多重派生的基类拷贝 250
10.3.2 虚基类的定义和使用 252
10.4 静态数据成员 253
本章小结 256
习题 257
实验 259
第11章 友元与运算符重载 261
11.1 友元函数 261
11.1.1 定义普通函数为友元函数 261
11.1.2 友元注意事项 263
11.2 运算符重载 263
11.2.1 运算符重载的概念 263
11.2.2 二元运算符重载 263
11.2.3 一元运算符重载 268
11.2.4 字符串类运算符重载 273
11.3 多态性与虚函数 275
11.3.1 多态性技术 275
11.3.2 虚函数 276
11.3.3 纯虚函数 278
11.4 类与对象的特性 280
本章小结 281
习题 282
实验 284
第12章 流类体系与文件操作 285
12.1 流类体系 285
12.1.1 流 285
12.1.2 基本流类体系 286
12.1.3 标准输入/输出流 287
12.1.4 流的格式控制 288
12.1.5 数据输入/输出成员函数 293
12.2 文件操作 295
12.2.1 C++文件概述 295
12.2.2 C++的文件流类体系 295
12.2.3 文件的使用方法 296
12.2.4 文本文件的使用方法 299
本章小结 304
习题 305
实验 306
附录A C++中的关键字 308
附录B 常用库函数 310
附录C ASCII码表 314
附录D 学时分配参考表 315
参考文献 316
展开
前言
C++是目前流行的一种面向对象的程序设计语言,是学习C#程序设计、Java程序设计、数据结构、ASP.NET程序设计、嵌入式程序设计等课程的基础,是软件、计算机网络、计算机应用、电子信息、物联网应用技术等专业的基础课程。
《C++程序设计》于2002年出版,2005年、2011年和2015年,该书进行过3次修订。2006年,“C++程序设计”入选江苏省高等学校精品课程。2007年,《C++程序设计(第2版)》被江苏省教育厅评为省级精品教材。基于课程的重要性,编者在教学中采用三阶段教学法:第一阶段,讲授C++程序设计,并辅以计算方法与程序设计选修课程;第二阶段,开设为期一周的C++课程设计;第三阶段,安排学生进行C++等级考试培训,进而参加C++二级考试。编者总结多年从教经验发现,计算机专业的学生只有扎实掌握C++语法、语义、算法基础,并通过C++二级考试,才有可能学好C#程序设计、Java程序设计、数据结构、ASP.NET程序设计等后续课程,才能得到软件公司、网络公司、物联网公司的认可,进而获得较好的职业岗位。
本次修订,将书中所有程序按C++的标准格式进行编写,每章增加了知识点导图,配备了书中典型例题的微课视频,并对部分例题进行了修改。本书在修订后具有以下特点。
(1)本书将“C语言程序设计”与“C++程序设计”综合在一起,用C++语言来描述原先用C语言描述的内容,并增加了面向对象的程序设计内容。这样做的好处如下:
① 学生可以从数据类型、程序结构等基础内容由浅入深地学习,本书起点低,可作为程序设计的入门教材。
② 将两门课程综合为一门课程,缩短了总的教学时间,可在一学期内完成本课程的学习。
③ 可以使学生直接学习面向对象的程序设计方法。
(2)针对高职、高专院校学生的特点,本书尽可能使用通俗易懂的语言来叙述各章节内容,并尽可能使用典型例题来说明各章节知识点的概念与使用方法,力求将各章节的重点与难点解释清楚,以求多数学生在课后能看懂教材、掌握知识。
(3)本书配有典型例题的微课视频,学生可以使用移动设备扫描书中对应的二维码进行浏览,有利于理解典型例题中的知识点和算法思想。
(4)由于描述C++类与对象的程序段一般都较长,本书尽量用同一类型的例题来介绍系列概念。例如,用描述学生成绩的类讲解类与对象的概念、定义及使用方法;用描述矩形的类介绍构造函数、拷贝构造函数、默认构造函数、析构函数等一系列的概念、定义及使用方法,以减少教师板书的工作量,提高课堂效率。
(5)对学生比较难理解的内容,采用先通过例题分析,然后引出基本概念,给出定义格式、结论等正式内容的方式来讲述。
(6)高职、高专院校的学生在学习C++程序设计时遇到的问题之一:既要理解C++中许多比较难理解的概念,又要理解复杂的算法。为了解决该问题,本书在程序的算法上重点抓住常用的一些典型算法,如累加和、连乘积、最大值、最小值、平均值、排序,并将这些典型算法作为介绍各章节基本概念的例题,这样可减轻学生在理解算法上的负担,提高课堂效率。一些有较复杂算法的例题只会出现在每章后的程序设计应用举例中。
(7)各章均绘制了本章知识点导图,可以帮助教师和学生厘清本章的知识点。同时,每章前都有本章学习目的、要求,每章后都有本章小结,并配有一定量的习题,便于教师教学和学生学习。各章内容充实、安排合理、衔接自然。
(8)“本章小结”中列出了本章的重点和难点,不仅便于教师教学和学生学习,还提高了学生的学习效率。
(9)一些章节后还有实验部分,包含实验目的、实验内容、实验要求,将实验指导书综合在本书内,方便教师教学与学生做实验。
(10)对于某些算法(如排序算法),尽可能用简练的语句描述算法的核心含义,便于读者理解和记忆。
(11)第5章及以后的章节,凡是用到函数概念的知识点,如指针变量作为函数参数、返回指针值的函数、结构体数组作为函数参数、运算符重载函数,均以函数的定义、调用、参数传送的方式进行描述。这样做的好处是:一方面,通过多次重复使学生更好地掌握函数的定义、调用、参数传送的概念;另一方面,多次使用函数的定义、调用、参数传送的方式更容易引入新知识点的概念。
本书在编写过程中,参考了目前国内比较优秀的有关C++程序设计方面的资料,在此谨向有关作者表示感谢。对电子工业出版社的薛华强编辑在修订工作中给予的大力支持表示衷心的感谢。
本书由无锡职业技术学院汪菊琴、侯正昌担任主编,刘德强副教授担任主审。其中,第1~6章由侯正昌编写,第7~12章由汪菊琴编写,全书由汪菊琴统稿。张燕、许敏、颜惠琴、王得燕、黄可望等老师对本书的编写提出了许多宝贵意见,在此表示感谢。
本书若有疏漏及不足之处,恳请读者给予指正。
编 者
展开