图书简介:
第1章 C++概述 1
1.1 C++的起源 1
1.2 C++的特点 1
1.3 C++程序的基本结构 2
1.4 C++上机操作 5
1.4.1 C++程序的开发步骤 5
1.4.2 C++程序上机操作方法 5
本章小结 9
习题 1 10
第2章 数据类型和表达式 11
2.1 数据类型 11
2.2 常量和变量 13
2.2.1 常量 13
2.2.2 变量 15
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 逗号运算符和逗号
表达式 24
2.3.7 复合赋值运算符 25
2.3.8 数据类型长度运算符
(sizeof运算符) 25
2.4 简单输入和输出 25
2.4.1 数据输出cout 26
2.4.2 数据输入cin 27
2.4.3 简单输入/输出格
式控制 28
本章小结 29
习题2 30
实验一 32
第3章 程序结构和流程控制语句 33
3.1 程序的三种基本结构和语句 33
3.1.1 程序的三种基本结构 33
3.1.2 C++程序的组成 34
3.1.3 C++程序的语句 35
3.2 分支语句 36
3.2.1 if语句 36
3.2.2 条件运算符和条件
表达式 41
3.2.3 switch语句 42
3.3 循环语句 45
3.3.1 while语句 45
3.3.2 do…while语句 47
3.3.3 for语句 49
3.3.4 三种循环语句的比较 52
3.3.5 循环语句的嵌套 52
3.4 控制执行顺序的语句 53
3.4.1 break语句 53
3.4.2 continue语句 54
3.4.3 语句标号和goto语句 55
3.4.4 exit()和abort()函数 56
3.5 程序设计举例 56
3.5.1 分支语句应用举例 56
3.5.2 循环语句应用举例 60
本章小结 65
习题3 66
实验二 69
实验三 70
第4章 数组 71
4.1 数组的定义和使用 71
4.1.1 一维数组的定义和
使用 71
4.1.2 二维数组的定义和
使用 77
4.2 字符数组的定义和使用 82
4.2.1 字符数组和字符串 82
4.2.2 字符串处理函数 84
4.3 数组应用举例 87
4.3.1 一维数组应用举例 87
4.3.2 二维数组应用举例 89
4.3.3 字符数组应用举例 92
本章小结 93
习题4 94
实验四 97
实验五 98
第5章 函数 99
5.1 函数的定义和调用 99
5.1.1 函数的概念 99
5.1.2 函数的定义 100
5.1.3 函数的调用 101
5.1.4 实参与形参的数据
传送 104
5.2 函数的嵌套调用和递归调用 105
5.2.1 函数的嵌套调用 105
5.2.2 函数的递归调用 106
5.3 数组作为函数参数 109
5.3.1 数组元素作为函数
实参 109
5.3.2 数组名作为函数参数 110
5.4 变量的存储类型 114
5.4.1 作用域 114
5.4.2 局部变量与全局变量 116
5.4.3 动态变量与静态变量 117
5.4.4 变量的存储类型 117
5.5 内联函数 123
5.6 具有默认参数值的函数 124
5.7 函数的重载 125
本章小结 126
习题5 128
实验六 132
第6章 编译预处理 134
6.1 文件包含处理 134
6.2 宏定义 137
6.2.1 不带参数的宏定义 137
6.2.2 带参数的宏定义 139
6.3 条件编译 141
本章小结 144
习题6 145
第7章 指针 146
7.1 指针与指针变量 146
7.1.1 指针的概念 146
7.1.2 指针变量的定义
与引用 146
7.1.3 指针变量的运算 148
7.2 指针与数组 153
7.2.1 一维数组与指针 153
7.2.2 二维数组与指针 154
7.2.3 字符串与指针 158
7.3 指针变量与数组作为
函数参数 160
7.3.1 指针变量作为
函数参数 160
7.3.2 数组与指针作为
函数参数 162
7.4 指针数组 165
7.5 指向一维数组的指针
变量 167
7.6 返回指针值的函数 169
7.7 函数指针变量 171
7.8 new 和 delete 运算符 175
7.8.1 new运算符 175
7.8.2 delete运算符 176
7.8.3 使用new和delete运算
符应注意的事项 177
7.9 引用类型变量和const
类型的指针 177
7.9.1 引用类型变量的定义
及使用 177
7.9.2 const类型变量 179
本章小结 181
习题7 184
实验七 187
实验八 188
第8章 枚举类型和结构体 190
8.1 枚举类型的定义及应用 190
8.1.1 枚举类型的定义 190
8.1.2 枚举类型变量的定义 191
8.1.3 枚举类型变量的引用 192
8.2 结构体的定义及应用 194
8.2.1 结构体的概念 194
8.2.2 结构体类型的定义 195
8.2.3 结构体变量的定义 196
8.2.4 结构体变量的引用 197
8.2.5 结构体变量与数组
作为函数参数 199
8.3 链表 202
8.3.1 链表的概念 202
8.3.2 链表的基本操作 204
本章小结 212
习题8 214
实验九 215
实验十 216
第9章 类和对象 218
9.1 概述 218
9.2 类与对象 219
9.2.1 类 219
9.2.2 对象 222
9.3 构造函数 225
9.3.1 构造函数的定义 225
9.3.2 用构造函数初始化
对象的过程 227
9.3.3 默认构造函数 228
9.3.4 拷贝的构造函数 229
9.3.5 用new运算符动态
定义对象 230
9.4 析构函数 231
9.4.1 定义析构函数 231
9.4.2 析构函数的调用 232
9.4.3 默认的析构函数 235
9.5 构造函数和对象成员 235
9.6 this 指针 239
本章小结 239
习题9 241
实验十一 244
第10章 继承和派生类 245
10.1 继承与派生 245
10.1.1 继承与派生的基本
概念 245
10.1.2 派生类的定义 247
10.1.3 派生类的构造函数与基
类成员的初始化 249
10.2 冲突、支配规则和赋值
兼容性 253
10.2.1 冲突 253
10.2.2 支配规则 256
10.2.3 赋值兼容规则 257
10.2.4 基类和对象成员
的几点说明 257
10.3 虚基类 258
10.3.1 多重派生的基类
拷贝 258
10.3.2 虚基类 259
10.4 静态数据成员 261
本章小结 264
习题10 265
实验十二 267
第11章 友元与运算符重载 269
11.1 友元函数 269
11.1.1 定义普通函数为
友元函数 269
11.1.2 友元注意事项 270
11.2 运算符重载 271
11.2.1 运算符重载的概念 271
11.2.2 二元运算符重载 271
11.2.3 一元运算符重载 276
11.2.4 字符串类运算符
重载 282
11.3 多态性与虚函数 284
11.3.1 多态性技术 284
11.3.2 虚函数 285
11.3.3 纯虚函数 287
11.4 类与对象的特性 289
本章小结 290
习题11 291
实验十三 293
第12章 流类体系与文件操作 294
12.1 流类体系 294
12.1.1 流 294
12.1.2 基本流类体系 295
12.1.3 标准输入/输出流 296
12.1.4 流的格式控制 297
12.1.5 数据输入/输出成
员函数 302
12.2 文件操作 304
12.2.1 C++文件概述 304
12.2.2 C++的文件流类
体系 305
12.2.3 文件的使用方法 305
12.2.4 文本文件的使用 309
本章小结 314
习题12 316
实验十四 316
附录A C++中的关键字 318
附录B 常用库函数 320
附录C ASCII码表 324
附录D 《C++程序设计》学时分配
参考表 325
参考文献 326
展开
C++是一种目前流行的面向对象程序设计语言,是学习C#程序设计、Java程序设计、数据结构、ASP.NET程序设计、嵌入式程序设计课程的基础,是软件、计算机网络、计算机应用、电子信息、物联网应用技术等的专业基础课程。
本教材第一版于2002年出版。2005年,2011年对本书进行了两次修订。本教材于2006年被江苏省教育厅评为省精品教材。基于课程的重要性,作者在教学中采用三阶段教学法:第一阶段讲授“C++程序设计”,并辅以“计算方法与程序设计”选修课程;第二阶段开设为期一周的“C++课程设计”,第三阶段安排学生参加C++等级考试培训,最后参加C++二级考试。作者总结多年从教经验发现,计算机专业学生只有扎实掌握C++语法、语义、算法基础,并通过C++二级考试,才有可能学好C#程序设计、Java程序设计、ASP.NET程序设计等后续课程,才能得到软件公司、网络公司、物联网公司的认可,并获得较好的职业岗位。
本次修订,对第7章内容进行了调整,精简了每章后的小结和实验,删除了第13章“C++综合编程实训”,并对部分例题进行了修改。修订后的教材具有以下特点。
1.教材将《C语言程序设计》与《C++程序设计》综合为一本教材,用C++语言来描述原先用C语言描述的内容,并加上面向对象的程序设计内容。这样做的好处是:
(1)学生可以从数据类型、程序结构等基础内容开始由浅入深地进行学习,所以本教材起点低,可作为程序设计的入门教材使用。
(2)由于将两门课综合为一门课,所以减少了总的教学时间,可在一学期内完成本门课的学习。
(3)可以使学生直接学习面向对象的程序设计方法。
2.针对高职高专学生的特点,本书尽可能使用通俗易懂的语言来叙述各章节内容,并尽可能使用典型例题来说明各章节知识点的概念与使用方法,力求将各章节的重点难点解释清楚,以求多数学生在教师讲课后能看懂教材,掌握知识。
3.由于描述C++类与对象的程序段一般都较长,因此本书尽量用同一类型的例题介绍系列概念。例如,用描述学生成绩的类讲解类与对象的概念、定义及使用方法。用描述矩形的类介绍构造函数、拷贝构造函数、默认构造函数、析构函数等一系列的概念、定义及使用方法,以减少教师板书的工作量,提高课堂的讲课效率。
4.对学生比较难理解的内容,采用先通过例题分析,然后引出基本概念,给出定义格式、结论等正式内容的方式讲述。
5.高职高专学生在学习C++程序设计时遇到的困难之一是:一方面要理解C++中许多比较难理解的概念,另一方面又要理解复杂的算法。为了解决该问题,本教材在程序的算法上重点抓住常用的一些典型算法,如累加和、连乘积、最大值、最小值、平均值、排序,并将这些典型算法作为介绍各章节基本概念的例题,这样可减轻学生在理解算法上的负担,提高课堂的教学效果。一些有较复杂算法的例题只会出现在每章后的程序设计应用举例中。
6.每章前都有学习本章的目的、要求,每章后有本章小结,并配有一定量的习题,便于教师教学和学生自学。各章内容充实,安排合理,衔接自然。
7.每章的小结中,列出了本章的重点和难点,便于教师实施教学和学生学习,提高学生学习效率。
8.每章后均有实验部分,其包含实验目的、实验内容、实验要求、实验提示等。将实验指导书综合在教材内,方便教师教学与学生做实验。
9.对于某些算法(如三种排序算法),尽可能用简练的语句描述算法的核心含义,使读者易理解、易记忆。
10.第5章及以后的章节,凡是用到函数概念的知识点,如指针变量作为函数参数、返回指针值的函数、结构体数组作为函数参数、运算符重载函数,均以函数的定义、调用、参数传送三步进行描述。这样做的好处是:一方面,通过多次重复使学生能更好地掌握函数的定义、调用、参数传送的概念;另一方面,多次使用函数的定义、调用、参数传送三步方式更容易引入新知识点的概念。
在本书编写的过程中,参考了目前国内比较优秀的有关C++程序设计方面的书籍、资料,在此谨向有关作者表示感谢。对电子工业出版社吕迈策划编辑在修订工作中给予的大力支持表示衷心的感谢。
本书第1~6章由侯正昌编写,第7~9章由张燕编写,第10~12章由汪菊琴编写,全书由无锡职业技术学院侯正昌副教授统编,刘德强副教授审阅。许敏、颜惠琴、王得燕、黄可望等老师对本书的编写提出了许多宝贵意见,在此表示感谢。
本书若有错误及不足之处,恳请读者给予指正。
展开