定 价:32 元
丛书名:普通高等院校计算机专业(本科)实用教程系列
- 作者:徐孝凯
- 出版时间:2007/10/1
- ISBN:9787302157618
- 出 版 社:清华大学出版社
- 中图法分类:TP312C
- 页码:
- 纸张:胶版纸
- 版次:1
- 开本:16
本书较全面和详细地介绍了C++语言的所有语法规则,对于每一语法规则不仅给予准确定义,而且在程序设计中给予自然和灵活的运用,便于读者在应用中把握和加深对概念的理解。本书较详细地介绍了在Microsoft Visual C++ 6.0集成开发环境下的控制台应用程序的开发过程,书中的每个程序都在此环境下运行通过。本书的每章后面给出了适量的、针对性强的各种程序分析和设计应用题,供读者自行练习,并且专门配套出版了相应的习题参考解答书,供自学者参考。
本书已被列选为普通高等教育“十一五”国家级规划教材,已被许多高校选定为C/C++语言程序设计课程的教材和考研的指定参考书。
本书第一版已经出版近7年,得到社会上的广泛认可和好评,被许多高校选定为教材或考研参考书,并被评定为普通高等教育“十一五”国家级规划教材,按照学科发展和读者要求,现在及时修订为第二版。
C++语言是对传统C语言的丰富和发展,是C语言的更新换代产品,它含有目前软件开发技术中的所有要素,如函数重载、运算符重载、类、对象、模板、继承、多态、流、名字空间等,有许多要素是传统C语言所没有的,所以C++语言既能够代替C语言作为入门语言来学习,又能够学到比C语言丰富、实用和现代得多的知识。计算机及相关专业把C++语言定位为第一门计算机语言课程,代替传统的C语言,的确是明智之举。
本书第二版仍然保持原书第一版的优点,即内容丰富实用、叙述条理清楚、概念讲解明晰、问题分析透彻、程序设计规范、例题选择广泛、语法联系实际应用紧密和深入、前后章节内容组织和安排有序、创作风格便于自学和阅读。
本书第二版对第一版主要做了如下修改和补充:
1.增加了第一章“程序设计引论”。介绍了计算机中的数制和编码的概念,利用计算机编程解决问题的设计思路、方法和原则,利用文字叙述和各种流程图描述算法(即解决问题的方法)的特点和应用事例等内容。让读者在学习C++语言之前就能够了解和掌握利用计算机解决问题的思路和方法,能够用文字或流程图描述出来,待后面学习了C++语言后会很方便地编写出相应的程序。这一章不属于C++语言本身的内容,但能够为学习C++语言做好铺垫。如果通过前面课程对这一章内容有所了解,则可把这一章列为自学或选学内容。
2.在每章开始增加一段文字,简要地给出本章的主要内容和学习目标,让读者能够在学习具体内容前做到心中有数、有的放矢,增强学习的主动性和自觉性。在每章结束处高度地概括、归纳和提炼出主要知识点,能够使读者对本章所学的全部知识得到进一步的巩固和提升。
3.在第二章“C++语言概述”中,对于头文件的使用,引入了std名字空间的概念,这样更能体现C++语言的编程风格,对于在VC++ 6.0集成开发环境中建立工作区、工程项目和程序文件,作了较详细的介绍,有利于读者上机操作进行建立和调试程序。
4.在第八章“结构和联合”中,增加了对链表的一些操作算法的分析,如插入和删除结点等,使得进行链表的运算更加丰富,同时也加深对动态分配和回收对象的运算的理解和应用。
5.在第九章“类与对象”中,把类的运算符重载成员函数专门列为一节讨论,在本章的末尾增加一节“类的应用举例”,这些都能够加深读者对类与对象概念的理解。
6.对书中各章的一些内容,为了叙述更加条理和简明,便于理解和掌握,适当地增加和细化了内容标题。
7.为了便于读者自学,专门配套编写和同时出版了习题参考解答一书,该书给出了C++语言基础教程(第二版)中每章习题的全部参考解答和必要的分析与提示,并且还补充了一些练习题及参考解答。
8.在清华大学出版社图书网站的该书网页上给出讲课教案或课件素材供教师免费下载使用,并在适当的时候开设交流窗口供师生相互交流和研讨。
总之,经过这次修改和再版后,使得全书内容更加具有科学性、先进性、实用性和可读性,提供了多样性地教学支持服务,本书更加适合作为普通高校开设C++语言程序设计课程的教材或教学参考书。
另外,本书具有较丰富的程序设计例题和习题,涉及数值计算、数据处理等各方面的应用,它们均可以作为上机实验操作题使用,不需要另配实验教材。
尽管本人作了认真地修订,但可能仍有不尽如人意的地方,敬请热心读者斧正。本书编辑的电子邮件地址为:zhengyk@tup.tsinghua.edu.cn;作者的联系电话为:010-64910302,电子邮件地址为:xuxk@crtvu.edu.cn。
徐孝凯
2007年8月
第一版前言
C++语言是当前最流行和最实用的一种计算机高级程序设计语言,它具有丰富的数据类型和各种运算功能,带有庞大的函数库和类库,既支持面向过程的程序设计,又支持面向对象的程序设计,因此是目前进行软件开发的主要工具之一。
同其他所有计算机程序设计语言相比,C++语言具有非常明显的优势,正在成为普通高等院校开设程序设计课程的首选语言,因此在这套计算机专业系列教材中把它列为唯一必修的计算机语言课程是正确和明智的选择。
在这套系列教材中,C++语言基础课程具有非常重要的地位和作用,它将为数据结构、操作系统、数据库、软件工程、面向对象程序设计、计算机网络等所有后续课程打下坚实的计算机语言和程序设计基础。C++语言的知识将贯穿于所有这些课程之中,使得你的软件开发水平得到不断地提升,最终能够达到用面向对象的方法解决实际应用中的软件开发问题。
同社会上已经出版的各种C++语言教材相比,本书具有以下特点和优势:
1.采用最新、最流行和最实用的Microsoft Visual C++ 6.0为依据,对C++语言的基本内容作了详细地介绍,改变了计算机语言教材落后和脱离现实的状况。
2.对C++语言中的每一种数据类型、运算符、表达式、语句等基本内容,不仅从概念叙述上做到条理清楚、层次分明,而且精心选择针对性强的典型语句或程序段加以解释和阐述,使你能够从概念、理论到应用的结合上加深理解和认识。
3.本书从训练和提高初学者分析和编写一般应用程序的能力出发,结合介绍分支、循环、函数调用等语句,并介绍数组、字符串、指针、结构、联合、类、文件等数据类型,给出了具有各种实际应用价值的一般典型程序的设计方法。通过这些基本训练后,你不仅能够学会阅读和分析现有的程序,而且能够具有解决实际问题的编程思路和方法,编写出符合规范化要求的性能良好的程序。
4.每一章后面都给出了具有各种题型的大量练习题,以便从各种不同的角度加强你对所学知识的训练和提高。
5.C++语言系统庞大,知识点之间像一张网,错综复杂,如何能够按照一般的认知规律,把所有知识点按章节划分为前后有序的一个线性结构,由浅入深、由易到难、循序渐进地组织内容,并使之前后呼应、条理清楚、方便自学,是编写教材成功与否的关键。本书在这方面作了很大的努力,使你能够较轻松地学好本门课程,掌握C++语言的基本内容,为学好后续课程打下良好的基础。
6.本书中所有的C++语句、程序段、函数、程序等都在Microsoft Visual C++ 6.0集成开发环境下运行通过,确保它们是正确无误的。
7.本书由一人创作完成,确保了体系的完整性,前后内容的一致性,编写风格的统一性,避免了由多人创作带来的种种弊端。
8.本书的习题参考解答将被放在清华大学出版社的该教材的网页上,供读者随时访问和下载。
本书虽然是为普通高等院校计算机专业开设程序设计语言课程而编写的教材,由于学习它只需要初等数学的知识和对计算机的初步了解,学习目标是掌握C++语言的基本语法规则和分析与编写解决简单通用问题的程序,所以,同样适合作为其他各专业开设C++语言课程的教材。
本书共分为10章,依次为C++语言概述、数据类型和表达式、流程控制语句、数组和字符串、指针、函数、结构与联合、类与对象、类的继承与多态性、C++流等。各章之间的内容连贯有序,衔接自然,成为一个有机的整体。
C++语言课程是一门实践性极强的课程,只有多阅读别人的程序,多练习编写自己的程序,多上机调试和运行程序,才能够获得真正的知识。书中所有例题和习题的程序均可以作为上机题使用。
本课程总课时应安排在80~100之间,其中讲授与上机课时之比应为3∶2左右。若课时紧张,可根据教学需要自行取舍内容,其剩余内容留作学生自学。
承蒙北京大学计算机系孙家骕教授在百忙之中认真审阅了全部书稿,给予了高度评价,并提出了一些修改意见,对此表示衷心感谢!
尽管本人做出了最大努力,但由于水平所限,错误和不足之处在所难免,敬请专家和读者批评指正。本人电子邮件地址为:xuxk@crtvu.edu.cn。
徐孝凯
2002年1月
VI
C++语言基础教程(第二版)
VII
第二版前言
第一章 程序设计引论1
1.1 数制1
1.1.1 不同数制的表示与求值1
1.1.2 不同数制的转换3
1.2 编码5
1.3 算法8
1.3.1 算法的概念8
1.3.2 算法设计举例9
1.3.3 算法设计的一般原则11
1.4 用流程图描述算法13
1.4.1 传统流程图13
1.4.2 盒图14
1.4.3 问题分析图14
1.5 用流程图描述算法应用举例15
本章小结20
习题一21
第二章 C++语言概述23
2.1 引言23
2.2 C++字符集24
2.3 C++单词26
2.4 C++语句28
2.5 C++函数30
2.5.1 系统函数30
2.5.2 用户函数32
2.6 C++程序34
2.7 VC++ 6.0集成开发环境简介37
本章小结47
习题二48
第三章 数据类型和表达式51
3.1 数据类型51
3.2 常量54
3.2.1 整型常量54
3.2.2 字符常量55
3.2.3 逻辑常量56
3.2.4 枚举常量56
3.2.5 实型常量57
3.2.6 地址常量58
3.3 变量58
3.4 运算符和表达式62
3.5 函数70
本章小结76
习题三76
第四章 流程控制语句78
4.1 概述78
4.2 if语句78
4.3 switch语句83
4.4 for语句87
4.5 while语句96
4.6 do语句101
4.7 跳转语句106
本章小结109
习题四109
第五章 数组和字符串114
5.1 数组的概念114
5.2 一维数组115
5.3 二维数组119
5.4 使用typedef语句定义数组类型124
5.5 数组的应用126
5.5.1 数值计算126
5.5.2 统计130
5.5.3 排序132
5.5.4 查找134
5.6 字符串137
5.6.1 字符串概念137
5.6.2 字符串函数140
5.6.3 字符串应用举例144
本章小结147
习题五148
第六章 指针150
6.1 指针的概念150
6.2 指针变量151
6.3 指针运算156
6.4 指针与数组160
6.4.1 指针与一维数组160
6.4.2 指针与二维数组162
6.5 引用变量164
6.6 动态存储分配166
本章小结169
习题六170
第七章 函数175
7.1 函数定义175
7.1.1 函数定义格式175
7.1.2 函数定义格式举例176
7.1.3 有关函数定义的几点说明177
7.2 函数调用179
7.2.1 调用格式179
7.2.2 调用过程180
7.2.3 函数调用举例183
7.3 变量作用域187
7.3.1 作用域分类187
7.3.2 程序举例189
7.4 递归函数195
7.5 函数重载198
7.6 模板函数200
7.7 函数指针204
本章小结206
习题七207
第八章 结构与联合214
8.1 结构和联合的概念214
8.2 结构的定义214
8.3 结构变量的定义和初始化218
8.4 结构成员的访问221
8.5 使用结构的程序举例221
8.6 结构与函数229
8.7 结构与运算符重载233
8.7.1 运算符重载的概念233
8.7.2 用一般函数实现对自定义数据类型的运算功能234
8.7.3 用运算符重载函数实现对自定义数据类型的运算功能237
8.7.4 运算符重载函数应用举例242
8.8 结构与链表244
8.9 联合249
本章小结256
习题八257
第九章 类与对象263
9.1 类的概念与定义263
9.2 类的运算符重载成员函数269
9.3 构造函数273
9.3.1 无参构造函数和带参构造函数273
9.3.2 拷贝构造函数278
9.3.3 赋值重载函数279
9.3.4 构造函数中的初始化表280
9.4 析构函数281
9.5 友元函数和友元类283
9.6 类的应用举例289
本章小结295
习题九297
第十章 类的继承与多态308
10.1 类的继承308
10.1.1 类的继承性的概念308
10.1.2 派生类定义的格式308
10.1.3 派生类定义格式举例310
10.1.4 派生类应用举例318
10.2 类的虚函数与多态性321
10.3 类的静态成员325
10.3.1 静态数据成员325
10.3.2 静态函数成员328
10.4 模板类329
本章小结331
习题十332
第十一章 C++流338
11.1 C++流的概念338
11.2 输入输出格式控制340
11.2.1 ios类中的枚举常量340
11.2.2 ios类中的成员函数342
11.2.3 格式控制符345
11.3 文件操作347
11.3.1 文件的概念347
11.3.2 文件的打开和关闭349
11.3.3 字符文件的访问操作352
11.3.4 字节文件的访问操作360
11.4 字符串流367
本章小结369
习题十一370
附录 ASCII代码表376
??
??
??
??
XII
C++语言基础教程(第二版)
XIII
目 录