C++程序设计教程 第2版
作者 : 王珊珊 臧洌 张志航 编著
出版日期 : 2011-01-12
ISBN : 978-7-111-33022-6
定价 : 36.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 336
开本 : 16
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书包括两部分内容。第一部分为第1~9章,以C++语言的基本语法为起点讲述面向过程的程序设计。内容包括基本数据类型、基本控制结构、函数、数组、结构体、指针和链表,适用于程序设计语言的初学者。第二部分为第10~15章,结合C++语言的应用实例,讲述面向对象程序设计的基本概念。内容包括类和对象、继承和派生、多态和输入输出和文件操作,适用于从面向过程程序设计技术过渡到面向对象程序设计技术的学习者。

图书特色

C++程序设计教程
第2版
王珊珊 臧洌 张志航 编著
本书作者具有近二十年的C/C++程序设计语言教学经验。本书第1版于2005年出版,经历了5年的使用,反映良好,部分高校已将其选做教材。本书第2版在第1版的基础上,修正了不足,增补了部分教学需要的内容。
本书特点 
内容编排合理。本书首先讲授面向过程的程序设计,然后讲解面向对象的程序设计,内容由浅入深,适合于程序设计语言的初学者。
注重算法训练。本书例题、习题算法丰富,基本涵盖程序设计语言课程的各类算法。读者编程时可参照例题进行,有章可循。
读者对象广泛。本书通俗易懂,适用于大学本科非计算机理工类各专业学生,对计算机专业学生也是一本好的参考书,同时适用于自学C++语言的读者。总之,本书适用于面向对象程序设计语言的初学者。
教学资源丰富。本书配备的教学资源有:全部例题的源代码、全部习题的解答、教学课件,有需要的教师可登录华章网站(www.hzbook.com)下载。

图书前言

编写背景
  各本科、专科院校的工科类专业普遍开设了程序设计语言类课程,尤其是电类专业普遍开设了C++程序设计课程,因此需要一本适用于初学者的教材。本书就是为了满足这个层次的读者需求而编写的,主要包括两个方面的内容:1)传统面向过程的程序设计,目的是让初学者掌握基本的程序设计知识;2)面向对象的程序设计,让初学者学习面向对象程序设计的基本概念,为今后学习以面向对象为基础的通用软件开发工具如Visual C++、Delphi和C#.net等打下坚实的基础。
  本书的第1版于2005年出版,经历了5年的使用,反映良好,部分高校已将其选做教材。但在使用过程中发现了一些问题和需要改进的地方。本书第2版在第1版的基础上,修正了不足,增补了一些教学需要的内容。主要修订内容如下:
  1)改正编辑排版错误,改正个别程序中的小错误。
  2)改正、改进部分概念描述,使描述更精准,摒弃描述中的口语化现象。
  3)改进部分程序算法描述。
  4)修改全部例题源程序的排版格式,以利于培养读者良好的程序书写习惯。
  5)调整部分例题顺序和内容,删除、增加了一些例题和习题。
  6)增加了一些在第1版中因考虑不周全而未写入教材的内容,以强化一些概念,如第2章增加C++的bool类型量,第9章增加9.11节“用typedef定义新类型名”,第11章增加11.3节“常数据成员和常成员函数”。
  7)重写第15章“模板”。
编写内容和教学要求
  本书第一部分(第1~9章)结合C++语言的基本语法,介绍传统的面向过程的程序设计,包括C++语言基本数据类型、基本运算、基本输入/输出、结构化流程控制语句、函数、编译预处理、数组、结构体、指针和链表等内容,基本上是传统的C程序设计语言的内容。第二部分(第10~15章)是面向对象的程序设计,以面向对象的3大特点为主线,讲述类和对象的基本概念,类的封装、继承和多态,函数模板和类模板,并讲述了输入/输出流类体系、文件操作等内容。
  本书主张的教学理念是注重程序设计算法的教学,注重对学生算法思路的逻辑训练,而不拘泥于语法要素的细枝末节。本书通俗易懂,各章都配有大量的例题和习题。这些例题和习题主要是针对各章的教学难点和重点以及各种算法而设计的。在选择例题和习题时,尽量涵盖目前程序设计语言课程中的各种算法类型,使初学者拿到习题后,能够在教材的例题中找到相似的例子,这样对初学者来说,解题就不是一件非常困难的事情了。读者可以通过本书进行理论教学和上机练习,还可以根据实际情况选择安排课程设计。本书选用了适合不同层次学生的课程设计题目,旨在加强学生动手编制较大规模程序的能力。
  本书第1、2、9~14章由王珊珊编写,第5~8章由臧洌编写,第3、4、15章由张志航编写,全书由王珊珊负责统稿。
  讲述本书全部内容的建议学时为:理论教学56学时,上机实验60小时,课程设计16小时(内容另行安排)。本书的实验环境是Visual C++ 6.0,本书中全部的例题和习题均在该环境中通过编译和运行。
  本书可能会存在疏漏、不妥和错误之处,恳请专家和广大读者指教和商榷。
  联系方法
  作者电子邮件地址:
  shshwang@nuaa.edu.cn,coralwang2002@yahoo.com. cn(王珊珊)
  zangliwen@yahoo.com.cn(臧洌)
  zqwzzh@nuaa.edu.cn(张志航)
作  者
2010年11月20日
于南京航空航天大学

上架指导

计算机\程序设计

封底文字

本书作者具有近二十年的C/C++程序设计语言教学经验。本书第1版于2005年出版,经历了5年的使用,反映良好,部分高校已将其选做教材。本书第2版在第1版的基础上,修正了部分不足,增补了少量教学需要的内容。

本书特色:
内容编排合理。本书首先讲授面向过程的程序设计,然后讲解面向对象的程序设计,内容由浅入深,适合于程序设计语言的初学者。
注重算法训练。本书例题、习题算法丰富,基本涵盖程序设计语言课程的各类算法。读者编程时可参照例题进行,有章可循。
读者对象广泛。本书通俗易懂,适用于大学本科非计算机理工类各专业学生,对计算机专业学生也是一本好的参考书,同时适用于自学C++语言的读者。总之,本书适用于面向对象程序设计语言的初学者。
教学资源丰富。本书配有的教学资料有:全部例题的源代码、全部习题的解答、教学课件,有需要的教师可登录华章网站(www.hzbook.com)下载。

图书目录

前言
教学建议
第一部分  面向过程的程序设计
第1章 C++概述 1
1.1 计算机语言与程序 1
1.1.1 机器语言与程序 1
1.1.2 汇编语言与程序 1
1.1.3 高级语言与程序 1
1.2 从C到C++ 2
1.3 程序设计方法 2
1.3.1 结构化程序设计方法 3
1.3.2 面向对象的程序设计方法 3
1.4 简单的C++程序介绍 4
1.5 程序开发的步骤 5
习题1 5
第2章 数据类型、运算符和表达式 6
2.1 保留字和标识符 6
2.1.1 保留字 6
2.1.2 标识符 6
2.2 C++的基本数据类型 6
2.3 常量和变量 8
2.3.1 常量 8
2.3.2 符号常量 9
2.3.3 变量 10
2.4 基本运算符和表达式 11
2.4.1 C++运算符及表达式简介 11
2.4.2 算术运算符和算术表达式 11
2.4.3 运算优先级和结合性 11
2.4.4 关系运算符和关系表达式 12
2.4.5 逻辑运算符和逻辑表达式 12
2.4.6 位运算符和位运算表达式 12
2.4.7 自增、自减运算符和表达式 14
2.4.8 赋值运算符和赋值表达式 14
2.4.9 逗号运算符和逗号表达式 15
2.4.10 sizeof( ) 运算符和表达式 15
2.4.11 逻辑表达式运算优化的副作用 15
2.5 类型转换 16
2.5.1 赋值时的自动类型转换 16
2.5.2 各种类型运算量混合运算时的自动类型转换 17
2.5.3 强制类型转换 17
习题2 18
第3章 简单的输入/输出 19
3.1 传统的输入/输出函数实现方法 19
3.2 cout输出流 20
3.2.1 输出八进制数、十六进制数和用科学记数法表示的数 22
3.2.2 输出字符或字符串 23
3.3 cin输入流 23
3.3.1 输入十六进制或者八进制数据 25
3.3.2 输入字符数据 26
3.4 总结 27
习题3 27
第4章 C++的流程控制 29
4.1 算法概述 29
4.1.1 算法的作用和类别 29
4.1.2 算法的设计原则 30
4.1.3 算法的表示工具 30
4.1.4 结构化程序设计中基本结构的表示 31
4.2 C++程序的结构和语句 33
4.3 选择结构语句的使用 35
4.3.1 if语句 35
4.3.2 if语句的嵌套使用 37
4.3.3 条件运算符 38
4.3.4 switch语句 39
4.4 循环结构语句的使用 42
4.4.1 goto语句及标号的使用 42
4.4.2 while语句 43
4.4.3 for语句 43
4.4.4 do-while语句 44
4.4.5 break语句和continue语句 45
4.4.6 循环的嵌套 47
4.5 控制语句的应用举例 47
习题4 52
第5章 函数 54
5.1 概述 54
5.2 函数的定义与调用 54
5.2.1 函数的定义 54
5.2.2 函数的调用 56
5.2.3 函数的参数 58
5.3 函数的原型声明 59
5.4 函数的嵌套调用和递归调用 60
5.4.1 函数的嵌套调用 60
5.4.2 函数的递归调用 63
5.5 内联函数 66
5.6 函数重载 67
5.6.1 参数类型不同的重载函数 67
5.6.2 参数个数不同的重载函数 68
5.7 使用C++系统函数 68
5.8 作用域和存储类别 69
5.8.1 作用域 69
5.8.2 存储类别 72
5.8.3 全局变量的作用域的扩展和限制 74
5.9 程序的多文件组织 76
5.9.1 内部函数和外部函数 76
5.9.2 多文件组织的编译和连接 77
习题5 77
第6章 编译预处理 79
6.1 宏定义 79
6.1.1 不带参数的宏定义 79
6.1.2 带参数的宏定义 80
6.2 “文件包含”处理 82
*6.3 条件编译 83
习题6 85
第7章 数组 86
7.1 数组的定义及应用 86
7.1.1 一维数组的定义及使用 86
7.1.2 一维数组作函数参数 88
7.1.3 多维数组的定义及使用 96
7.1.4 二维数组作函数参数 98
7.2 字符数组的定义及应用 101
7.2.1 字符数组的定义 101
7.2.2 字符数组的初始化 101
7.2.3 字符数组的使用 102
7.2.4 字符串和字符串结束标志 102
7.2.5 字符数组的输入/输出 103
7.2.6 字符串处理函数 104
7.2.7 字符数组应用举例 106
习题7 108
第8章 结构体、共用体和枚举类型 110
8.1 结构体的定义及应用 110
8.1.1 结构体类型的定义 110
8.1.2 结构体类型变量的定义 111
8.1.3 结构体类型变量及其成员的引用 112
8.1.4 结构体数组 114
8.2 共用体的定义及应用 116
8.2.1 共用体类型及其变量的定义 116
8.2.2 共用体类型变量的引用 116
8.2.3 共用体数据类型的特点 117
8.3 枚举类型 118
8.3.1 枚举类型的定义 118
8.3.2 枚举类型变量的定义 118
8.3.3 枚举类型变量的使用 118
习题8 120
第9章 指针、引用和链表 121
9.1 指针和指针变量 121
9.1.1 指针的概念 121
9.1.2 指针变量的定义 121
9.1.3 有关指针的运算符 & 和 * 121
9.1.4 指针变量的初始化 122
9.1.5 直接访问和间接访问 122
9.1.6 地址值的输出 124
9.2 指针作函数参数 124
9.2.1 基本类型量作函数参数 124
9.2.2 指针变量作函数参数 125
9.3 指针和指向数组的指针 126
9.3.1 一维数组与指针 126
9.3.2 一维数组元素指针作函数参数 129
9.3.3 指针和字符串 132
9.3.4 二维数组与指针 135
9.3.5 获得函数处理结果的几种方法 139
9.4 指针数组 140
9.4.1 指针数组的定义和使用 140
9.4.2 使用指针数组处理二维数组 141
9.4.3 利用字符指针数组处理字符串 142
9.4.4 main 函数的参数 143
9.5 指向指针的指针 144
9.6 指针和函数 145
9.6.1 函数指针 145
9.6.2 返回指针值的函数(指针函数) 147
9.7 指针小结 147
9.8 引用、const型变量和const型指针 149
9.8.1 引用类型变量的说明及使用 149
9.8.2 引用和函数 150
9.8.3 const型量 150
9.9 存储空间的动态分配和释放 152
9.9.1 new和delete运算符 153
9.9.2 使用new和delete运算符的注意事项 154
9.10 链表及其算法 154
9.10.1 结构体与指针 154
9.10.2 链表概念的引入 156
9.10.3 链表的常用算法 157
9.11 用typedef定义新类型名 162
习题9 163
第二部分  面向对象的程序设计
第10章 类和对象 167
10.1 类和对象的定义 167
10.1.1 从结构体到类 167
10.1.2 类和对象的定义形式 167
10.1.3 对象成员的访问 168
10.1.4 成员函数的定义 169
10.1.5 对象的存储空间 170
10.1.6 定义类和对象的有关说明 171
10.2 初始化对象、撤销对象 172
10.2.1 构造函数和析构函数 172
10.2.2 缺省构造函数和缺省析构函数 176
10.2.3 拷贝构造函数和缺省拷贝构造函数 177
10.2.4 拷贝构造函数的调用时机 180
10.2.5 利用构造函数进行类型转换 181
10.3 成员函数的特性 182
10.3.1 内联函数和外联函数 182
10.3.2 成员函数的重载 183
10.4 构造函数和对象成员 184
10.5 this指针 186
习题10 187
第11章 类和对象的其他特性 194
11.1 静态成员 194
11.1.1 静态数据成员 194
11.1.2 静态成员函数 195
11. 2 友元 196
11.2.1 友元函数 196
11.2.2 一个类的成员函数可作为另一个类的友元函数 197
11.2.3 友元类 198
11.3 常数据成员和常成员函数 199
11.3.1 常数据成员 199
11.3.2 常成员函数 199
习题11 201
第12章 继承和派生 203
12.1 继承的基本概念 203
12.2 单一继承 203
12.2.1 公有继承(派生) 204
12.2.2 私有继承(派生) 206
12.2.3 保护继承(派生) 207
12.2.4 private成员和protected成员的区别 207
12.3 多重继承 208
12.4 基类成员的初始化 209
12.4.1 基类的构造函数和析构函数的调用顺序 209
12.4.2 对象成员构造函数和析构函数的调用顺序 210
12.5 二义性和支配规则 211
12.5.1 二义性(访问冲突) 211
12.5.2 支配规则 214
12.6 虚基类 214
12.7 访问对象成员的成员和访问基类成员 217
12.7.1 访问对象成员的成员 217
12.7.2 访问基类成员 218
12.8 赋值兼容 219
习题12 219
第13章 多态性 225
13.1 函数重载 225
13.2 运算符重载 226
13.2.1 运算符重载的几点说明 226
13.2.2 运算符重载的两种方式 226
13.2.3 类型转换函数—将本类对象转换成其他类对象 237
13.2.4 其他运算符的重载 238
13.2.5 字符串类 247
13.2.6 运算符重载函数小结 251
13.3 静态联编 251
13.4 动态联编和虚函数 252
13.4.1 虚函数的定义和使用 253
13.4.2 虚析构函数 256
13.5 纯虚函数和抽象类 258
习题13 265
第14章 输入/输出流 271
14.1 输入/输出基本概念 271
14.1.1 输入/输出流 271
14.1.2 文本流、二进制流和数据文件 271
14.1.3 缓冲 272
14.2 输入/输出流类体系 272
14.2.1 基本输入/输出流类体系 272
14.2.2 用运算符重载实现标准设备的输入/输出 273
14.2.3 缺省的输入/输出格式 274
14.3 输入/输出格式控制 275
14.3.1 使用成员函数进行格式控制 275
14.3.2 使用操纵算子进行格式控制 279
14.4 使用成员函数实现输入/输出 281
14.4.1 输出函数 281
14.4.2 输入函数 282
14.5 重载插入和提取运算符 284
14.6 文件流类 287
14.6.1 文件流类体系 288
14.6.2 文件的打开和关闭 288
14.6.3 文本文件的读写 290
14.6.4 二进制文件的读写 294
14.7 文件的随机访问 296
14.8 输入/输出流的出错处理 298
习题14 300
*第15章 模板 302
15.1 函数模板 302
15.1.1 函数模板的定义和使用 303
15.1.2 模板函数的重载 307
15.1.3 函数模板的重载 308
15.2 类模板 309
15.2.1 类模板的定义和使用 310
15.2.2 类模板的友元函数 314
15.2.3 类模板的特殊处理 317
15.3 总结 318
习题15 319
附录A ASCII码表 320
附录B 常用库函数 321
参考文献 325

教学资源推荐
作者: [丹]弗莱明·尼尔森(Flemming Nielson),[丹]汉内·里斯·尼尔森(Hanne Riis Nielson),[英]克里斯·汉金(Chris Hankin) 著
作者: 周纯杰 何顶新 周凯波 彭刚 张惕远 编著
作者: (英)Roger Garside, John Mariani
作者: [美]詹姆斯·高斯林(James Gosling), 比尔·乔伊(Bill Joy), 盖·斯蒂尔(Guy Steele),吉拉德·布拉查(Gilad Bracha), 亚历克斯·巴克利(Alex Buckley) 著
参考读物推荐
作者: Clinton Pierce
作者: Patrick Henry Winston
作者: 方腾飞 魏鹏 程晓明 著
作者: 丁如敏 王琳 等著