C++程序设计教程

C++程序设计教程"

作者:赵英良、仇国巍、夏秦、贾应智、乔亚男
ISBN:9787302330578
定价:¥38
字数:千字
页数:
出版时间:2013.08.01
开本:
版次:1-4
装帧:
出版社:清华大学出版社
简介

本书以问题求解的过程为主线,以C++语言为载体,介绍计算机程序的基本结构、信息的表示、流程的控制、模块化方法、指针操作、面向对象的编程方法、输入输出格式控制与文件操作和基本数据结构及应用等内容。本书采用“精讲多练”的教学模式,有丰富的例题和习题。例题从题目描述、问题分析、源程序、运行结果、程序分析、思维扩展等方面进行讲解。本书的特点是层次清晰、循序渐进、清楚易懂。书中源码有丰富的注释,能有效帮助学生理解解题思路。本书不仅涵盖了C++语言的基本语法知识,而且更注重讲解计算机程序求解问题的思想方法;目的在于既培养编程能力,又启发思维。本书既可作为高等学校理工类专业计算机程序设计课程的教材或参考书,也可供程序设计爱好者、工程技术和软件开发人员学习、参考。

前言

2010年7月,C9高校联盟在西安召开了“计算机基础课程研讨会”,“计算思维”一词成为大家讨论的热点。会后,C9高校联盟发表联合声明,“计算思维”一词在2660字的声明中出现了18次,可见“计算思维”的重要性和地位。从此我国开始了“计算思维”研究和教学改革的热潮,特别是在计算机基础教育领域。结合程序设计课程中存在的问题,我们也进行了思考,编写了本书。

本书以思维能力培养为目的,以提高编程能力为目标,以C++语言为载体,以问题求解的过程为主线,介绍计算机程序的基本结构、信息的表示、流程的控制、模块化方法、指针操作、面向对象的编程方法、输入输出格式控制与文件操作和基本数据结构及应用等内容。

本书采用“精讲多练”的教学模式,有丰富的例题和习题。例题从题目描述、问题分析、算法描述、编程指南、源程序、运行结果、测试指南、程序分析、思维扩展等方面进行讲解。本书的特点是层次清晰、循序渐进、清楚易懂。

本书希望对解决C++程序设计学习中的以下问题有所帮助。

(1) 提高独立编程的能力。程序设计课程常常会使学生陷入语法的复杂规则中,使其在问题、求解方法和程序之间,无法建立清晰的关联。这就使得他们在看到问题时,用手工是会做的,看别人的程序也懂,但自己写就不行了。为此,本书对稍微复杂的例题,一是给出问题的分析,分析问题求解的关键;二是写出步骤详细的算法,这是问题和程序之间的桥梁;三是在源程序中给出详细清晰的注释,并与算法之间有一致的对应关系,能有效帮助学生理解解题思路。希望同学们思考: 对于待求解的问题,关键是什么,其中的物理量如何表达,如何将方法写成算法,如何将算法“翻译”成程序。

(2) 提高程序调试的能力。调试方法本身不在本书中讲述,是在实验中渗透的。从第二次实验开始,在第2章、第3章对应的实验中,会教给学生跟踪程序的方法,强调跟踪、调试的重要性。这是每个学生必须学会的。

(3) 提高自学和独立解决问题的能力。本课程要求学生必须学会使用帮助,认识程序设计中的英语词汇。遇到问题先尝试到教材、网络、MSDN以及同学那儿去获取帮助,然后再问老师。学生遇到英文的编译错误信息和帮助时,在理解上还是很有困难。本书对大部分术语都列出了对应的英文词汇,在配套的《C++程序设计实验指导》的附录中列出了编译中见的英文词汇。

(4) 提高思维能力。本书的例题绝大部分都有“思路扩展”一项,对求解的思路、方法进行概括,进一步介绍这种方法的适用场合或提出问题让学生思考。本书作为讲义已使用了两届。调查结果显示,认为本课程的教学对解决问题的一般方法“很有启发”的占31.71 %,认为“有启发”的占58.54 %,两项合计占90.25%。

本书不仅涵盖了C++语言的基本语法知识,而且更注重讲解计算机程序求解问题的思想方法;目的在于既培养编程能力,又启发思维。本书可作为高等学校理工类各专业的计算机程序设计教材或参考书,也可供程序设计爱好者、工程技术和软件开发人员学习、参考。

本书由赵英良主编,冯博琴教授审阅。第1~4章由赵英良编写,第5、6章由贾应智编写,第7~9章由夏秦编写,第10章由仇国巍编写,第11章由乔亚男、仇国巍编写。本书由赵英良、仇国巍统稿。在编写过程中还得到了西安交通大学计算机教学实验中心许多同事的关心、指导和帮助,2011级、2012级的许多同学提出了很多建议,在此表示感谢。本书编写过程中参考了很多资料,向这些图书的作者表示诚挚的谢意。由于作者水平有限,书中可能会有错误和不当之处,恳请读者指正。

编者

目录

第1章程序设计与C++概述1

1.1程序设计与计算机语言1

1.1.1计算机语言的发展1

1.1.2C++语言3

1.2第一个C++程序4

1.2.1在屏幕上显示“Hello World!”4

1.2.2C++的程序结构和C++程序的执行顺序4

1.2.3C++程序的基本要素7

1.3C++的编程步骤9

1.4编程实例13

1.4.1打印中秋贺卡13

1.4.2计算存款利息15

1.5小结17

习题117

第2章简单信息的表达与运算19

2.1信息的表达19

2.1.1数据类型与常量19

2.1.2单项特征的表达——变量26

2.1.3多个相同类型的特征的表示——数组28

2.1.4文字信息的表达——字符串30

2.2数据的运算32

2.2.1算术运算32

2.2.2关系运算34

2.2.3逻辑运算符和表达式35

2.2.4自增运算符和自减运算符36

2.2.5位运算符和位运算表达式37

2.2.6三目条件运算符41

2.2.7运算符的优先级43

2.2.8不同类型数据的混合运算45

2.3程序设计实例46

2.3.1已知三边计算三角形面积46

2.3.2从反序数到回文数47

2.3.3数字符号的数值形式和ASCII形式49

2.3.4启闭指定设备50

2.3.5加密解密51

2.4小结53

习题255

第3章运算的流程控制57

3.1程序的执行顺序57

3.2不同情况分别处理——分支58

3.2.1特殊情况特殊处理(单路分支)59

3.2.2不同情况分别处理(两路分支)60

3.2.3多种情况分类处理(多重分支switch)63

3.3多次加工——循环程序设计65

3.3.1已知次数的循环65

3.3.2依据条件进行循环68

3.3.3终止循环和直接进入下次循环71

3.4综合实例72

3.4.1数组的输入、排序和输出72

3.4.2字符串的处理74

3.4.3有趣的数字77

3.5小结80

习题381

第4章复杂信息的表达与处理85

4.1多个事物的多项特征85

4.1.1二维数组85

4.1.2多维数组88

4.1.3二维字符数组及字符串的其他表示方法89

4.2多项特征整体描述92

4.2.1结构体类型的定义和使用93

4.2.2结构体数组97

4.3取有限值的特征的描述——枚举101

4.4综合实例103

4.4.1矩阵运算103

4.4.2字符串处理105

4.4.3统计词频107

4.5小结110

习题4112

第5章问题的模块化求解114

5.1模块化程序设计114

5.2函数的定义和声明116

5.2.1函数的定义116

5.2.2函数的声明118

5.3函数调用119

5.3.1函数调用的格式119

5.3.2参数的传递方式123

5.3.3为形参指定默认值125

5.3.4数组名作为函数参数128

5.3.5结构体变量作为函数参数130

5.4递归函数131

5.5内联函数135

5.6函数重载136

5.7变量的作用域和存储类型139

5.7.1局部变量139

5.7.2全局变量140

5.7.3变量存储类型141

5.8程序设计实例144

5.8.1使用递归求斐波那契序列的前30项144

5.8.2求非线性方程的根145

5.8.3有趣的数146

5.8.4二分查找法148

5.9小结150

习题5151

第6章按址操作——指针153

6.1地址与指针153

6.1.1地址153

6.1.2指针和指针变量154

6.2指针变量的定义和使用155

6.2.1指针变量的定义155

6.2.2指针变量的使用157

6.2.3结构体变量的指针158

6.2.4二级指针159

6.3地址传递和函数的指针159

6.3.1函数调用时的地址传递159

6.3.2指向函数的指针变量162

6.4数组的指针和字符串的指针164

6.4.1一维数组的地址164

6.4.2二维数组的地址168

6.4.3字符串的指针169

6.5动态申请存储空间172

6.5.1动态申请存储空间172

6.5.2定义动态数组173

6.6程序设计实例174

6.6.1指针变量作为函数的形参174

6.6.232位的二进制IP地址转换成点分十进制地址177

6.6.3指针数组178

6.6.4带参数的main函数180

6.7小结181

习题6181

第7章数据的抽象与封装——类183

7.1类的定义和使用183

7.1.1类的定义183

7.1.2类的使用186

7.2面向对象的方法简介188

7.2.1对象和面向对象188

7.2.2面向对象方法189

7.3构造函数和析构函数190

7.3.1构造函数191

7.3.2析构函数193

7.3.3类的组合199

7.4对象与指针203

7.4.1指向对象的指针203

7.4.2指向对象成员的指针204

7.4.3this指针205

7.5多文件结构206

7.5.1类的定义文件206

7.5.2类的实现文件207

7.5.3类的使用208

7.5.4编译预处理209

7.6程序设计实例212

7.6.1学生信息类212

7.6.2日期类216

7.7小结222

习题7222

第8章取其精华发挥优势——继承225

8.1继承和派生225

8.1.1派生类的定义225

8.1.2派生类的构成226

8.2继承方式230

8.2.1公有继承231

8.2.2私有继承231

8.2.3保护继承234

8.3派生类的构造函数与析构函数236

8.3.1派生类的构造函数236

8.3.2派生类的析构函数237

8.4虚基类240

8.5程序设计实例244

8.5.1从学生到本科生、硕士生、博士生244

8.5.2从U盘到MP3249

8.6小结251

习题8252

第9章统一接口不同实现——多态性253

9.1多态性概述253

9.2虚函数256

9.3抽象类258

9.4运算符重载261

9.5程序设计实例267

9.5.1从几何形状到点、圆和矩形267

9.5.2向量的加减运算272

9.5.3高校员工管理系统276

9.6小结285

习题9286

第10章标准输入输出与文件操作287

10.1数据的输入输出287

10.1.1输入输出流及流库287

10.1.2标准输入流288

10.1.3标准输出流292

10.2文件操作296

10.2.1文件输入输出流类296

10.2.2文件的打开与关闭297

10.2.3文本文件和二进制文件的读写299

10.2.4文件操作典型例题307

习题10312

第11章数据结构、算法与应用314

11.1数据结构概览314

11.1.1数据结构的基本概念314

11.1.2线性数据结构316

11.1.3非线性数据结构319

11.2模板与标准模板库323

11.2.1函数模板和类模板323

11.2.2标准模板库325

11.2.3简单应用举例327

11.3常见算法策略332

11.3.1枚举法332

11.3.2分治法335

11.3.3回溯法337

11.3.4贪心算法343

习题11345

附录AASCII字符表347附录B常用数学库函数349附录C常用的字符串处理函数350附录D常用字符串和数的转换函数352附录Estring类的常用方法354参考文献356

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个