C++程序设计基础(第2版)

C++程序设计基础(第2版)"

作者:揣锦华
ISBN:9787302590804
定价:¥59
字数:千字
页数:
出版时间:2022.01.01
开本:
版次:2-1
装帧:
出版社:清华大学出版社
简介

本书基于新的C++标准,从程序设计基础知识开始,系统地介绍C++语言的基本概念、语法规则和编程技术,使读者能够利用C++语言描述现实世界中的问题及其解决方法。本书力求以较为精练的语言,并按照由浅入深、循序渐进、前后贯通的原则,对每部分的知识点和难点,用精选大量例题进行讲解。本书采用发散性思维方法,对相关知识进行扩展,意在开阔视野,培养编程兴趣,使读者在循序渐进中提高编程能力。

本书可作为高等院校计算机程序设计相关课程的教材或教学参考书,也可作为程序设计人员的培训或自学参考用书。本书有配套的线上课程,适合开展线上课程的教学活动。

前言

第2版

随着信息技术和计算机科学的发展,程序设计已成为现代人应该掌握的基本技能。C++语言是从C语言发展演变而来的一种面向对象的程序设计语言,C++全面兼容C语言,同时提供了比C语言更严格且更安全的语法,从这个意义上讲,C++首先是一个更好的C语言。虽然C++语言是从C语言发展而来的,但C++本身也是一个完整的程序设计语言,而且它与C语言既有兼容又有发展。因此,将C++作为程序设计的入门语言进行学习是完全可行的。

多年前,编者曾出版《C++程序设计基础》一书,在社会上有一定的影响,广大读者对其也提出了一些改进意见,近几年在具体的教学实践中,编者对C++程序设计的教学内容和形式有了一些新的认识和想法。另外,随着互联网技术的不断发展,线上教学需求陡增。因此,本书增加了面向对象程序设计部分,并结合线上课程的特点,对内容进行了部分调整。

本书基于新的C++标准,从程序设计基础知识开始,系统地介绍C++语言的基本概念、语法规则和编程技术。针对初学者的特点,力求做到深入浅出,将复杂的概念用简洁浅显的语言讲述,使读者可以轻松地入门,循序渐进地提高。本书基于编者多年的教学实践与经验编写而成,对每部分的知识点和难点,都力求以较为精练的语言进行讲解。在介绍语法时,着重从程序设计方法的角度讲述其意义和用途。同时,精心挑选了大量例题进行辅助讲解,并对例题所采用的算法和编程技术进行了深刻的分析,旨在使读者对C++编程技术不仅知其然,而且知其所以然。在介绍基础知识的基础上,选择了一些综合性较强的例题,对常用的数据结构和经典的算法进行详细的剖析,这些综合编程例题既方便教师安排教学,又便于读者综合运用所学知识,进一步提高编程技能。另外,书中各章均配有大量的思考题和习题,方便读者练习和自我考核。

本书可配合传统教学和线上教学,满足不同层次读者的需求,并运用发散性思维方法,对相关知识进行扩展,意在开阔视野,培养编程兴趣,使读者在循序渐进中提高编程能力。本书配套微课视频,请读者扫描封底刮刮卡内二维码,获得权限,再扫描书中二维码,即可观看视频。

全书以程序设计方法贯穿始终,从语法规则到程序设计实践,力求在掌握基本程序设计方法的同时,培养读者良好的程序设计习惯,为今后的学习打下坚实的编程基础。本书的宗旨是不仅要使读者掌握C++语言本身,而且能够利用C++语言描述现实世界中的问题及其解决方法。学习程序设计的关键是要深刻领会程序设计的内涵,多学多练,培养对程序设计语言的“语感”,最终掌握程序设计的“秘籍”。

本书可作为高等学校计算机程序设计相关课程的教材或教学参考书,也可作为学习程序设计人员的培训或自学参考书。

在本书的编写过程中,查阅和参考了大量文献,在此对书后所列参考文献的作者一并表示感谢。另外,对广大读者和师生对本书的诚恳建议和意见表示衷心的感谢。

由于编者水平有限,书中难免存在不足和错误之处,恳请读者批评指正。

编者2021年6月

目录

第1章程序设计基础知识1

1.1计算机中数的表示与编码1

1.1.1进位计数制2

1.1.2二进制数的编码表示4

1.1.3常用的信息编码6

1.2程序设计及程序设计语言7

1.3算法及算法表示8

1.4程序设计方法10

1.4.1结构化程序设计10

1.4.2面向对象程序设计11

1.5小结与知识扩展12

1.5.1小结12

1.5.2计算机中常用存储单位及其换算13

习题13

第2章C++简单程序设计15

2.1C++程序的基本结构和要素16

2.1.1一个简单的C++程序16

2.1.2字符集17

2.1.3词法记号17

2.1.4注释18

2.2基本数据类型和数据19

2.2.1基本数据类型20

2.2.2常量21

2.2.3变量和引用25

2.3运算符与表达式27

2.3.1算术表达式28

2.3.2赋值表达式29

2.3.3逗号表达式30

2.3.4关系表示式31

2.3.5逻辑表达式32

2.3.6条件表达式33

2.3.7sizeof运算符34

2.3.8位运算34

2.3.9运算符的优先级和结合性36

2.4数据类型转换37

2.4.1赋值时的类型转换37

2.4.2表达式中隐含转换39

2.4.3强制类型转换39

2.5简单的输入与输出控制40

2.5.1C++的输入与输出40

2.5.2使用I/O流控制符控制输出格式41

2.6C++基础知识综合编程案例42

2.7小结与知识扩展44

2.7.1小结44

2.7.2C语言的printf()和scanf()函数44

2.7.3C语言的getchar()和putchar()函数46

2.7.4数据溢出47

习题48

C++程序设计基础(第2版)第3章程序控制结构51

3.1顺序控制结构51

3.2选择控制结构52

3.2.1选择控制语句if…else52

3.2.2条件运算符(?:)代替if…else语句53

3.2.3if…else语句的嵌套54

3.2.4多路选择控制语句switch57

3.3循环控制结构58

3.3.1while语句58

3.3.2do…while语句60

3.3.3for语句61

3.3.4循环嵌套62

3.4程序控制进阶63

3.4.1其他控制语句63

3.4.2输入信息控制循环66

3.5程序控制综合编程案例68

3.6小结与知识扩展75

3.6.1小结75

3.6.2字符函数库76

习题77

第4章函数82

4.1函数的定义与调用82

4.1.1函数定义83

4.1.2函数调用85

4.2函数的参数传递87

4.2.1数值传递88

4.2.2引用传递89

4.2.3使用const说明参数90

4.2.4默认参数值的函数91

4.3递归函数92

4.4函数探幽95

4.4.1内联函数95

4.4.2函数重载97

4.4.3函数模板99

4.5使用C++系统函数101

4.6函数综合编程案例102

4.7小结与知识扩展106

4.7.1小结106

4.7.2main()函数106

习题108

第5章数组113

5.1数组的基本概念113

5.2一维数组114

5.2.1一维数组的声明114

5.2.2一维数组的初始化114

5.2.3访问一维数组的元素115

5.3多维数组118

5.3.1二维数组的声明118

5.3.2二维数组的初始化119

5.3.3访问二维数组的元素119

5.4数组作为函数参数122

5.4.1一维数组名作为参数122

5.4.2二维数组的行地址作为参数124

5.5数组与字符串126

5.5.1字符型数组的声明及其初始化126

5.5.2字符串的基本操作127

5.6数组综合编程案例130

5.6.1排序130

5.6.2查找132

5.6.3统计134

5.6.4字符处理136

5.6.5数列处理137

5.7小结与知识扩展139

5.7.1小结139

5.7.2数组越界139

5.7.3算法的时间复杂度及其表示140

习题141

第6章自定义数据类型145

6.1结构体145

6.1.1结构体的定义145

6.1.2结构体的使用147

6.1.3结构体数组149

6.2共用体151

6.3枚举类型153

6.4类型自定义语句155

6.5类和对象156

6.6小结与知识扩展157

6.6.1小结157

6.6.2结构体的大小158

习题159

第7章指针160

7.1指针概述160

7.1.1指针的概念160

7.1.2指针变量的定义162

7.1.3指针的基本操作163

7.1.4指针的运算164

7.2指针与数组167

7.2.1指针与数组的关系167

7.2.2使用指针访问一维数组元素167

7.2.3使用指针访问二维数组元素169

7.2.4多级指针171

7.3指针与函数173

7.3.1指针作为函数参数173

7.3.2指向函数的指针175

7.3.3指针作为函数的返回类型178

7.4指针与字符串179

7.4.1字符型指针与字符串179

7.4.2使用字符型指针数组操作字符串181

7.4.3字符串标准库函数182

7.5动态内存分配与new和delete运算符183

7.5.1动态内存分配183

7.5.2new运算符184

7.5.3delete运算符185

7.6指针综合编程案例186

7.7小结与知识扩展193

7.7.1小结193

7.7.2malloc()和free()函数194

7.7.3常指针196

7.7.4链表操作197

习题203

第8章数据的共享与保护205

8.1作用域与生存期205

8.1.1作用域205

8.1.2生存期208

8.1.3局部变量和全局变量209

8.2编译预处理210

8.2.1文件包含210

8.2.2宏定义211

8.2.3条件编译216

8.3多文件结构218

8.4命名空间219

8.5小结与知识扩展222

8.5.1小结222

8.5.2命令行参数222

8.5.3异常处理224

习题227

第9章输入/输出流与文件操作230

9.1输入/输出流概述230

9.1.1输入/输出流的概念230

9.1.2输入/输出标准流231

9.2控制输出格式232

9.2.1使用流控制符232

9.2.2使用流类成员函数233

9.3使用流类成员函数实现输入/输出235

9.3.1输入函数235

9.3.2输出函数237

9.4串流类238

9.5文件流类及文件操作239

9.5.1文件的概念239

9.5.2文件的读写操作240

9.6小结与知识扩展243

9.6.1小结243

9.6.2C语言的文件操作函数244

习题249

第10章面向对象程序设计252

10.1面向对象程序设计思想252

10.1.1结构化程序设计的不足252

10.1.2从结构化程序设计到面向对象程序设计253

10.1.3面向对象的概念和方法254

10.1.4面向对象程序设计的特点255

10.2类和对象257

10.2.1类的定义257

10.2.2对象的定义及其使用258

10.2.3面向对象的标记259

10.3类的构造函数和析构函数261

10.4类的组合264

10.5类中数据和函数的共享与保护266

10.5.1静态成员266

10.5.2友元268

10.6小结与知识扩展271

10.6.1小结271

10.6.2常类型272

习题275

第11章继承性280

11.1继承与派生280

11.1.1派生类的定义280

11.1.2派生类生成过程281

11.1.3多层次派生282

11.2类的继承方式283

11.2.1公有继承284

11.2.2保护继承285

11.2.3私有继承286

11.3派生类的构造函数和析构函数287

11.4派生中成员的标识与访问289

11.4.1作用域分辨符290

11.4.2多继承中作用域的分辨290

11.5对象指针292

11.6小结与知识扩展294

11.6.1小结294

11.6.2虚基类解决“二义性”295

习题297

第12章多态性304

12.1多态概述304

12.1.1多态性的基本概念304

12.1.2联编与多态的实现方式304

12.1.3多态的实现原理305

12.2运算符重载305

12.2.1运算符重载的规则和形式306

12.2.2运算符重载为成员函数307

12.2.3运算符重载为友元函数309

12.2.4运算符重载实例310

12.3虚函数314

12.3.1虚函数概述314

12.3.2虚函数的限制316

12.3.3虚析构函数316

12.3.4纯虚函数和抽象类317

12.4小结与知识扩展319

12.4.1小结319

12.4.2重载new和delete运算符319

习题320

参考文献322

作者简介

编辑推荐

作者具有丰富的程序设计教学经验,教材以精讲多练为原则,配备大量例题及习题,采用发散性思维方法,对相关知识进行了扩展,本教材适应新形势的需求,结合线上课程的特点,教材内容安排适合线上课程教学活动的开展。

作者寄语

揣锦华,女,1964年出生,河北人,教授,硕士生导师,加拿大维多利亚大学(University of Victoria)访问学者,长安大学信息工程学院软件工程专业责任教授。长安大学“C/C++程序设计”一流线上课程建设负责人及主讲教师,为本科生和研究生主讲“C/C++程序设计”,“数据分析与处理软件开发综合实验”和 “大数据分析与处理”等课程。主编并出版《C++程序设计基础》和《面向对象程序设计与VC++实践》等6部教材。主持和参加“软件工程专业综合改革试点”、“软件工程专业人才培养模式创新实验区”、“面向应用的程序设计实践教学体系研究”、“创新型程序设计课程教学方法研究”等教学改革项目十余项。

电子资料

www.luweidong.cn

下一个