V第二版前言△:章节自都附有英文,它们涵盖了C++大部分的术语,加上书中凡是新出现的概念都用英文标出,这样便可以强化今后对C++原版书的阅读理解能力。A每章末的习题都是操作性习题,能通过上机加以验证。△每个有编号的程序代码都经作者亲手在BorlandC++Builder6.0的环境上调试完成,都是完整的可运行程序,它的结构是以程序名引导,点出程序功能,然后以各个代码块列出。代码块之间的注释行,起到分隔代码模块,强化阅读理解的作用。代码中的C++关键字用黑体标出,预编译指令用斜体标出,一目了然,如临编程开发的代码编辑现场。每个程序一般都有运行结果,如果是描述同一功能的程序,已经在前面列出了运行结果,则本程序运行结果免去。运行的结果用框圈出,框中的内容中,由键盘输入的字符用下划线标示,/为回车符。△有些程序的运行需要文件数据,则含有数据内容的文件框列在程序代码的右上方。一些习题也以数据文件框和运行结果文本框作为编程的输入输出要求。△程序设计课程与计算机的其他课程有许多内在的联系,书中将以指引参考文献的方式引导读者进一步阅读。同样,涉及一些高级C++技术的时候,也以参考文献的方式指引读者阅读经典读物。例如,(参考文献[1JCH2.5)表示书后列出的参考文献[1]中,第2章第5节。书中内容自成体系,各章各节互相参照,若超前引用后面叙述的知识,则以后面的章节目号指引读者参考某个细节。例如,名空间域(CH7.6),表示第7章第6节以整节的篇幅详细地描述了本概念。△:附录中附有语法导读和标准库导用,它们是编程学习中的重要参考。此外,还附有参考文献,它们是读者学习的好帮手。温馨致谢全国各地的读者甚至海外华人对本书第一版给予了高度评价,他们的支持、鼓励和催促,是我撰写第二版的强大动力。同时他们还提出了许多宝贵意见和建议。无疑,他们推进了第二版的撰写质量,并影响了书稿风格。他们所提的问题,许多都成了书中细节描写的靓点。浙江工业大学的教学大课堂给我提供了教学实践的场所。学生们虚心求教的态度感动了我,使我下决心一定要搞清原来还不十分清楚的概念,也一定要调通那些稀奇古怪的源代码。他们追问我的问题,带给我长久的思考,于是,书稿轮廓也就慢慢地清晰起来了。ACM/ICPC(国际大学生程序设计竞赛)培训是我的另一项积累教学经验和获得教学资料的工作。学生们学了一年的编程课程,转到竞赛培训中来,似乎仍是从零开始。它让我确信,实践环节对初学者来说,是多么重要,也就更坚定了我强调实践的宗旨。①MicrosoftVisualC++6.0因其较多的非标准性而妨碍了标准编程实践,尤其是它不甚支持诸多的标准类编程,所以没有被作者采纳。读者也可以使用MicrosofVisuaiC++NET版本,或者Linux下的G++3.0以上版本来验证书中程序。www.TopSage.com
www.TopSage.com
大网VI第二版前言一些学生得知我在撰写书稿,主动要求“先赌为快”,他们阅读了部分书稿,并提出M了修改意见,使我少走了许多弯路。许多同事关心此书的早日付印,给了我春天般的温暖。他们温馨地提醒我不要浪费宝贵的光阴。出版社也经常关心我的编写进度,令我无以逃避,只能坐下来,静心写作和调试代码。C++的泰斗BjarneStroustrup虽未晤面,但其经典之作C++ProgrammingLanguage始终在我脑中素绕,给了我摧破任何技术障碍的力量。我感到欣慰,因为我能为国家,为读者做出一点贡献,也因此感谢所有赋予我灵感和力量的人们,我更以无限之情,感激终于成就此书的天时、地利、人和。路漫漫,我当继续努力,不负众望。作者的电子邮件地址是:qianneng@mail.hz.zj.cn钱能2005年夏于杭州自在居www.TopSage.com
www.TopSage.com
目录(Contents)第一部分基础编程(PartITheBasicProgramming)第1章概述(Introduction).1.1程序设计语言(ProgrammingLanguage)1.2C++前史(TheOriginsandHistoryofC++)1.3C++.-1.3.1衰贬C(CommentonC)1.3.2C继承者(InheritorofC)T1.3.3标准C++(StandardC++)81.4C++编程流程(C++ProgrammingFlow)81.4.1编程过程(ProgrammingProcedure)1.4.2最小样板程序(MinimumSampleProgram)101.4.3编程风格(ProgrammingStyle)111.5程序与算法(Programs&Algorithms)111.5.1程序(Programs)111.5.2算法(Algorithms)121.5.3编程与结构(Programming&Structures)131.6过程化程序设计(ProceduralProgramming)131.6.1基于过程的程序设计(Procedure-BasedProgramming)161.6.2结构化程序设计(StructuredProgramming)171.7对象化程序设计(ObjectifiedProgramming)171.7.1基于对象的程序设计(Object-BasedProgramming)201.7.2面向对象的程序设计(Object-OrientedProgramming)·211.8目的归纳(Conclusion)231.9练习1(Exercises1)24第2章基本编程语句(BasicProgrammingStatements)242.1说明语句(DeclarativeStatements)252.1.1变量定义(VariableDefinition).262.1.2函数声明和定义(FunctionDeclaration&Definition)272.1.3初始化与赋值(Initializing&Assignment)272.2条件语句(ConditionalStatements)272.2.1if语句(ifStatement).302.2.2条件表达式(ConditionalExpressions)www.TopSage.com
www.TopSage.com
目录(Contents)VII312.2.3switch语句(switchStatement)-342.2.4if或switch语句(iforswitch)342.3循环语句(LoopStatements):342.3.1for循环结构(forLoopStructure)·362.3.2for循环(forLoop)372.3.3while循环(whileLoop)392.3.4do-while循环(do-whileLoop)402.4循环设计(LoopDesigns)402.4.1字符图形(CharacterGraphics)442.4.2素数判定(PrimeDecision)452.5输入输出语句(I/OStatements)452.5.1标准I/O流(StandardI/OStreams)462.5.2流状态(StreamStates)482.5.3文件流(FileStreams)512.6转移语句(MoveStatements)512.6.1break语句(breakStatement)512.6.2continue语句(continue Statement)·532.6.3goto语句(gotoStatement)552.7再做循环设计(MoreLoopDesigns)552.7.1逻辑判断(LogicDecision)572.7.2级数逼近(ProgressionApproximation)602.8目的归纳(Conclusion)2.9练习2(Exercises2)61** 64第3章数据类型(DataTypes)· 653.1整型(intTypes)653.1.1二进制补码(BinaryComplement)· 673.1.2整型数表示范围(intRange)·683.1.3编译器与整型长度(Compiler&intLength)· 683.1.4整数字面值(IntegerLiterals)693.1.5整数算术运算(IntegerArithmeticOperations)*703.2整数子类(intSubtypes)·703.2.1字符型(charType)713.2.2枚举型(enumType). 723.2.3布尔型(boolType)·723.3浮点型(floatType)..723.3.1浮点数表示(Floating-PointNumberRepresentation).763.3.2浮点型表示范围(Floating-PointTypeRanges)·773.4C-串与string(C-strings&string)www.TopSage.com
www.TopSage.com
目录(Contents)IX3.4.1C-串(C-strings)77.77om3.4.2字符指针与字符数组(charPointers&charArrays).803.4.3string:.813.4.4string与C-串的输入输出(string&C-stringI/O)-823.4.5string流(stringStreams)83数组(Arrays)3.5833.5.1元素个数(NumberofElements)843.5.2初始化(Initialization)85默认值(DefaultValues)3.5.3..86二维数组(2-DArrays)3.5.4873.6向量(Vectors)873.6.1基本操作(BasicOperations)-88添加元素(AddingElements)3.6.2893.6.3二维向量(2-DVectors)913.7指针与引用(Pointers&References).913.7.1指针(Pointers)933.7.2指针的类型(PointerTypes)953.7.3指针运算(PointerOperations)973.7.4指针限定(PointerRestrictions)983.7.5引用(References)1003.8目的归纳(Conclusion)1003.9练习3(Exercises3)103第4章计算表达(ComputationExpressing)1034.1名词解释与操作符(NameExplanation&Operators)1034.1.1名词解释(SomeNameExplanations)1054.1.2操作符汇总(OperatorsSummary)1054.1.3操作符的说明(OperatorExpanations)1064.2算术运算问题(ArithmeticProblems)1064.2.1周而复始的整数(int:MoveinCycles)·1074.2.2算法局限性(AlgorithmLimitation)1084.2.3中间结果溢出(IntermediateResultOverflow)-1094.2.4浮点数的比较(Floating-PointNumberComparison)..1114.3相容类型的转换(CastCompatibleTypes).-1114.3.1隐式转换(ImplicitCast)1124.3.2精度丢失(LostPrecision)1134.3.3显式转换(ExplicitCast)4.4关系与逻辑操作(Relations&LogicOperations)114·1154.4.1条件表达(ConditionExpressing)www.TopSage.com
www.TopSage.com