C/C++及其相关
-
Visual C++实用教程张荣梅,梁晓林 编著本书从应用程序开发的不同阶段出发,分别系统地介绍了使用VisualC++6.0开发应用程序的基本知识、较复杂的和高级的编程技巧等。内容包括:VisualC++6.0的开发环境,C++语言知识,类和对象,各种控件、菜单、工具栏、状态栏的创建,图形应用程序,单文档和多文档界面应用程序以及数据库应用程序的创建等。每章内容后均有实例和习题,以便读者复习和上机实践。本书通过大量的编程实践,使读者能够尽快和牢固地掌握VisualC++6.0的各种编程技巧。本书可作为大专院校计算机课程的教材。也可作为各类计算机培训班和自学教材,同时也适于初学者和具有一定经验的VisualC++6.0用户使用和参考。 -
C 语言程序设计闫利平,马林艺 编著本书系统介绍了C语言编程知识,共分11章:第1章为C语言基础知识:第2、3、4章分别介绍了结构化程序设计的顺序、选择、循环结构:第5章为函数:第6章为编译与预处理:第7章为数组:第8章为指针;第9章介绍的是结构体、联合体、枚举类型;第10章为文件;第11章是综合应用。其中前6章是基础部分,后5章是实用的编程方法和技巧。 全书结构简洁,文字流畅;配有大量典型程序实例,突出通过程序学习程序的教学思想。每章章末均精选了基本题、练习题,作为学习该章内容的巩固与延伸。本书适合作高职、高专、成人高校的教材和参考书,亦可作为C语言 自学用书。 -
C++面向对象程序设计习题解答与上机指导林小茶,陈维兴 编著本书是《C++面向对象程序设计》的配套教材,书中给出了主教材中所有习题的参考答案以及每个实验题的上机步骤和参考程序,供教师和学生参考。本书内容主要分为3篇,分别为《C++面向对象程序设计》习题和参考答案;C++语言上机实验环境介绍;上机实验题与参考答案。另外书后附录给出了常用的错误信息注释,以供学生上机实验时使用。本书可作为高校学生学习C++程序设计课程的教材,也可作为C++语言自学者的参考书。 -
数据结构孟祥瑞,汤文兵,胡胜利 等编著《数据结构》(C语言版)是为“数据结构”课程编写的教材,同时也可作为学习“数据结构及算法”课程的参考教材。《数据结构(C语言版)》系统地介绍了各种常用的数据结构和排序、查找的各种算法,阐述了各种数据结构内在的逻辑关系,存储表示和运算操作。《数据结构(C语言版)》概念表达严谨,注重理论与实践的结合,内容丰富,通俗易懂,既便于教学,又可用于自学。《数据结构(C语言版)》要作为普通高等院校计算机类专业的教材,也可作为信息类相关专业的本专科教材,同时对于从事计算机工程与应用工作的科技工作者,《数据结构(C语言版)》也是一本实用的参考手册。 -
C语言程序设计李秦伟 主编本书是按照电子信息工程本科专业的规划编写的,对数据类型与表达式、C基本程序设计、分支程序、循环程序、函数、预处理、数组与字符串、指针、文件操作、程序分析与设计等内容进行了深入细致的讲解与阐述,同时溶入了编者与同事在C程序设计课程教学改革中的经验与教训,力求使读者学到扎实、实用的知识,养成良好的程序设计风格与习惯。 -
C语言程序设计习题解答与上机指导林小茶 编著《C语言程序设计习题解答与上机指导》是中国铁道出版社出版的教材《C语语程序设计》的配套教材,也适合单独作为学习C语言的学习辅导书。《C语言程序设计习题解答与上机指导》给出了教材《C语言程序设计》中所有大约200道习题的参考答案,并编写了九个实验,每个实验包括实验目的和要求以及实验内容等,供广大教师和学生参考。同时,为了方便大家的上机,还编写了上机指南,对Turbo C集成环境做了较为详细的介绍。书中内容分为三部分,第一部分是“《C语言程序设计》习题解答”,这部分内容对教材中的每道习题都给出了详细的解答,有些习题还给出了不同的解题方法,这些习题是作者多年以来在教学中积累、收集并经过验证的习题,全部经过上机调试通过;第二部分“C语言上机指导”介绍了程序设计实验的一般步骤,并给出了一份上机报告详例,并精心设计了九套上机实验题,每套实验都给出了实验目的,要求和内容,帮助读者在实验中巩固所学知识;第一部分“C语言上机指南”介绍了Turbo C集成环境中的常用命令的使用方法。 -
C语言程序设计案例教程沈大林 主编,杨旭 等编著本书是“新世纪职业技术培训案例教程”系列丛书之一。全书具有较大的知识信息量,共讲解了近30个实例,提供了100多道思考题与练习题。全书以计算机实例操作为主线,采用真正的任务驱动方式,展现全新的教学方法。本书贯穿以实例带动知识点的学习,通过学习实例掌握软件的操作方法和操作技巧。每个实例均由实例效果、技术分析、程序解析、知识进阶和思考练习五部分组成。在按实例进行讲解时,充分注意保证知识的相对完整性和系统性。本书可以作为计算机职业技术学校的教材,也可以作为初、中级培训班的教材,还适于作为初中者的自学用书。 -
C语言程序设计典型题解析及自测试题曹化工,秦友淑 编著本书包括典型题解析、自测试题二部分内容。典型题解析部分遵照C 语言标准,结合作者多年教学和科研实践的经验和体会,全面、系统地概括了C 语言的基本概念、语法和语义;依据C 语言各部分的知识点精心设计和挑选了大量具有代表性的例题,并逐一作了详细解答。自测试题部分列出了不同难易程度的试卷,包括计算机专业本科、专科C语言程序设计课程考试试题,以及硕士生、博士生入学考试试题,可供不同层次的读者参考。附录中给出了典型题解析中的习题及自测试题的答案。全书内容以对读者进行基本训练为出发点,以提高综合运用C语言进行程序设计的能力为目标,可作为计算机专业本科、专科学生的学习参考书,也可供报考计算机专业硕士、博士研究生的考生复习使用。 -
C++专家导引(美)温斯顿 著如果你希望C++成为你驾驭的程序设计语言,如果你希望学习语言的精华并为编程实践做准备,如果你希望学到面向对象程序设计的优势,以及如何通过C++类层次结构的设计原理最大化这些优势,本书正是你的最佳选择。以一个简短且具代表性的C++程序体现关键概念是本书的一大特色。这个程序采用容器和有轨电车的知识来报告铁道运输的货运能力,从而体现了C++类抽象自然类的能力。书中用类概念编写的程序体现了如何创建类和对象;如何定义构造函数、阅读器(Reader)和写入器(Writer)函数;如何发挥数据抽象的优势;如何继承成员变量值和成员函数;在运行时如何创建新的类对象;在运行时如何定位正确的函数;在类的层次结构中如何使用构造函数;如何使用保护、私有成员变量和成员函数;如何使用保护和私有的类派生;如何设计类的层次结构;如何采用模板重用类的定义,等等。本书特色●通过逐步改进一个简短且完整的程序解释每个新思想●以易于掌握的if-then规则的形式概括关键知识点●强调面向对象程序设计、过程抽象和数据抽象的实质●帮助读者建立一个通用的、模板模式的个人类库 -
C++程序设计教程王珊珊 等编著本书凝聚了作者十余年的C/C++程序设计语言教学经验。其间又历经两年的试用,几易其稿,最终才得以面世。全书详细讲解了C++程序设计的基础知识,注重培养读者面向对象的实际编程能力。 本书特色 ■注重对读者算法思路的逻辑训练。 ■针对教学重点和难点,配有丰富的例题和习题。初学者在学习完相关章节的内容后,拿到题目,即能够独立编程,而不至于无从下手。 ■本书配有如下教学资料:本书全部例题的源代码、全部习题的解答、各章教学所用的PowerPoint讲稿。如果教师选用本书做教材,则可登录华章网站获取上述资料。 第一部分 面向过程的程序设计第1章 C++概述 1 1.1 计算机语言与程序 1 1.1.1 机器语言与程序 1 1.1.2 汇编语言与程序 1 1.1.3 高级语言与程序 2 1.2 从C到C++ 2 1.3 程序设计方法 3 1.3.1 结构化程序设计方法 3 1.3.2 面向对象的程序设计方法 3 1.4 简单的C++程序介绍 4 1.5 程序开发的步骤 5 习题1 5 第2章 数据类型、运算符和表达式 7 2.1 保留字和标识符 7 2.1.1 保留字 7 2.1.2 标识符 7 2.2 C++的基本数据类型 7 2.3 常量和变量 9 2.3.1 常量 9 2.3.2 符号常量 10 2.3.3 变量 11 2.4 基本运算符和表达式 11 2.4.1 C++运算符及表达式简介 11 2.4.2 算术运算符和算术表达式 12 2.4.3 运算优先级和结合性 12 2.4.4 关系运算符和关系表达式 13 2.4.5 逻辑运算符和逻辑表达式 13 2.4.6 位运算符和位运算表达式 13 2.4.7 自增、自减运算符和表达式 15 2.4.8 赋值运算符和赋值表达式 15 2.4.9 逗号运算符和逗号表达式 16 2.4.10 sizeof( ) 运算符和表达式 16 2.4.11 逻辑表达式运算优化时的副作用 16 2.5 类型转换 17 2.5.1 赋值时的自动类型转换 17 2.5.2 各种类型运算量混合运算时的自动类型转换 18 2.5.3 强制类型转换 19 习题2 19 第3章 简单的输入/输出 20 3.1 传统的输入/输出函数实现方法 20 3.2 cin 21 3.2.1 输入十六进制或者八进制数据 23 3.2.2 输入字符数据 24 3.3 cout 26 3.3.1 输出八进制数、十六进制数和用科学计数法表示的数 28 3.3.2 输出字符或字符串 29 3.4 总结 29 习题3 30 第4章 C++的流程控制 31 4.1 算法概述 31 4.1.1 算法的作用和类别 31 4.1.2 算法的设计原则 32 4.1.3 算法的表示工具 33 4.1.4 结构化程序设计中基本结构的表示 34 4.2 C++程序的结构和语句 36 4.3 选择结构语句的使用 38 4.3.1 if语句 38 4.3.2 if语句的嵌套使用 41 4.3.3 条件运算符 42 4.3.4 开关语句 43 4.4 循环结构语句的使用 46 4.4.1 goto语句及标号的使用 46 4.4.2 while语句 47 4.4.3 for语句 47 4.4.4 do-while语句 49 4.4.5 break语句和continue语句 50 4.4.6 循环的嵌套 51 4.5 控制语句的应用举例 52 习题4 57 第5章 函数 58 5.1 概述 58 5.2 函数的定义与调用 58 5.2.1 函数的定义 58 5.2.2 函数的调用 60 5.2.3 函数的参数 62 5.3 函数的原型说明 63 5.4 函数的嵌套调用和递归调用 64 5.4.1 函数的嵌套调用 64 5.4.2 函数的递归调用 68 5.5 内联函数 71 5.6 函数重载 72 5.6.1 参数类型不同的重载函数 72 5.6.2 参数个数不同的重载函数 72 5.7 使用C++系统函数 73 5.8 作用域和存储类别 74 5.8.1 作用域 74 5.8.2 存储类别 77 5.9 程序的多文件组织 82 5.9.1 内部函数和外部函数 82 5.9.2 多文件组织的编译和连接 83 习题5 84 第6章 编译预处理 85 6.1 宏定义 85 6.1.1 不带参数的宏定义 85 6.1.2 带参数的宏定义 87 6.2 "文件包含"处理 89 *6.3 条件编译 90 习题6 92 第7章 数组 93 7.1 数组的定义及应用 93 7.1.1 一维数组的定义及使用 93 7.1.2 一维数组做函数参数 96 7.1.3 多维数组的定义及使用 105 7.1.4 二维数组名用做函数参数 107 7.2 字符数组的定义及应用 111 7.2.1 字符数组的定义 111 7.2.2 字符数组的初始化 112 7.2.3 字符数组的使用 112 7.2.4 字符串和字符串结束标志 112 7.2.5 字符数组的输入/输出 113 7.2.6 字符串处理函数 115 7.2.7 字符数组应用举例 117 习题7 119 第8章 结构体、共用体和枚举类型 121 8.1 结构体的定义及应用 121 8.1.1 结构体类型的定义 121 8.1.2 结构体类型变量的定义 122 8.1.3 结构体类型变量及其成员的引用 123 8.1.4 结构体数组 126 8.2 共用体的定义及应用 129 8.2.1 共用体类型及其变量的定义 129 8.2.2 共用体类型变量的引用 129 8.2.3 共用体数据类型的特点 130 8.3 枚举类型 131 8.3.1 枚举类型的定义 131 8.3.2 枚举类型变量的定义 131 8.3.3 枚举类型变量的使用 131 习题8 133 第9章 指针和引用 135 9.1 指针和指针变量 135 9.1.1 指针的概念 135 9.1.2 指针变量的定义 135 9.1.3 有关指针的运算符 & 和 * 135 9.1.4 指针变量的初始化 136 9.1.5 直接访问和间接访问 136 9.1.6 地址值的输出 138 9.2 指针做函数参数 139 9.2.1 基本类型量做函数参数 139 9.2.2 指针变量做函数参数 140 9.2.3 从被调函数中返回信息的几种方法 141 9.3 指针和指向数组的指针 142 9.3.1 指针和一维数组 142 9.3.2 一维数组元素指针做函数参数 145 9.3.3 指针和字符串 148 9.3.4 多维数组指针(二维数组) 151 9.4 指针数组 155 9.4.1 指针数组的定义和使用 155 9.4.2 使用指针数组处理二维数组 155 9.4.3 利用字符指针数组处理字符串 156 9.4.4 指针数组做 main 函数的参数 158 9.5 指向指针的指针 159 9.6 指针和函数 159 9.6.1 函数指针 159 9.6.2 返回指针值的函数(指针函数) 162 9.7 指针小结 162 9.8 引用和其他类型的指针 163 9.8.1 引用类型变量的说明及使用 163 9.8.2 引用和函数 164 9.8.3 const类型量 165 9.9 存储空间的动态分配和释放 167 9.9.1 new和delete运算符 167 9.9.2 使用new和delete运算符的注意事项 168 9.10 链表及其应用 169 9.10.1 结构体及指针 169 9.10.2 链表概念的引入 170 9.10.3 有关链表的算法 171 习题9 176 第二部分 面向对象的程序设计第10章 类和对象 179 10.1 类和对象的定义 179 10.1.1 从结构体到类 179 10.1.2 类和对象的定义形式 179 10.1.3 对象成员的访问 180 10.1.4 成员函数的定义 181 10.1.5 对象的存储空间 183 10.1.6 定义类和对象的有关说明 183 10.2 初始化对象、撤销对象 185 10.2.1 构造函数和析构函数 185 10.2.2 缺省构造函数和缺省析构函数 190 10.2.3 拷贝构造函数和缺省拷贝构造函数 191 10.2.4 拷贝构造函数的调用时机 193 10.2.5 利用构造函数进行类型转换 195 10.3 成员函数的特性 196 10.3.1 内联函数和外联函数 196 10.3.2 成员函数的重载 197 10.4 构造函数和对象成员 199 10.5 this指针 201 习题10 202 第11章 类和对象的其他特性 211 11.1 静态成员 211 11.1.1 静态数据成员 211 11.1.2 静态成员函数 212 11.2 友元 213 11.2.1 友元函数 213 11.2.2 一个类的成员函数可作为另一个类的友元函数 215 11.2.3 友元类 216 习题11 216 第12章 继承和派生 218 12.1 继承的基本概念 218 12.2 单一继承 218 12.2.1 公有继承(派生) 219 12.2.2 私有继承(派生) 222 12.2.3 保护继承(派生) 223 12.2.4 private成员和protected成员的区别 223 12.3 多重继承 223 12.4 基类成员的初始化 225 12.4.1 基类的构造函数和析构函数的调用顺序 225 12.4.2 对象成员构造函数和析构函数的调用顺序 226 12.5 二义性和支配规则 228 12.5.1 二义性(访问冲突) 228 12.5.2 支配规则 231 12.6 虚基类 232 12.7 访问基类成员和访问对象成员的成员 235 12.7.1 访问对象成员的成员 235 12.7.2 访问基类成员 236 12.8 赋值兼容 237 习题12 238 第13章 多态性 244 13.1 函数重载 244 13.2 运算符重载 245 13.2.1 运算符重载的几点说明 245 13.2.2 运算符重载的两种方式 246 13.2.3 类型转换函数-将本类对象转换成其他类对象 258 13.2.4 其他运算符的重载 259 13.2.5 字符串类 269 13.3 静态联编 275 13.4 动态联编和虚函数 276 13.4.1 虚函数的定义和使用 276 13.4.2 虚析构函数 280 13.5 纯虚函数和抽象类 282 习题13 290 第14章 输入/输出流 296 14.1 输入/输出基本概念 296 14.1.1 输入/输出流 296 14.1.2 文本流、二进制流和数据文件 296 14.1.3 缓冲 296 14.2 输入/输出流类体系 297 14.2.1 基本输入/输出流类体系 297 14.2.2 用运算符重载实现标准设备的输入/输出 298 14.2.3 缺省的输入/输出格式 299 14.3 输入/输出格式控制 301 14.3.1 使用成员函数进行格式控制 301 14.3.2 使用操纵算子进行格式控制 305 14.4 使用成员函数实现输入/输出 307 14.4.1 输出函数 308 14.4.2 输入函数 308 14.5 重载插入和提取运算符 311 14.6 文件流类 315 14.6.1 文件流类体系 315 14.6.2 文件的打开和关闭 315 14.6.3 文本文件的读写 318 14.6.4 二进制文件的读写 323 14.7 文件的随机访问 325 14.8 输入/输出流的出错处理 327 习题14 329 第15章 模板 331 15.1 概述 331 15.2 函数模板 332 15.2.1 定义函数模板 333 15.2.2 模板函数的重载 336 15.2.3 函数模板的重载 338 15.2.4 多重数据类型参数的模板函数 339 15.3 类模板 341 15.3.1 定义类模板 341 15.3.2 类模板的友元函数 346 15.3.3 类模板的特殊处理 349 15.4 总结 350 习题15 351 附录A ASCII码表 352 附录B 常用库函数 353 参考文献 356 前言 编写背景教育部高教司早在"八五"期间已经把计算机基础教学纳入高校的重要基础课程中,提出了"加强工科非计算机专业计算机基础教学工作的几点意见",对计算机基础教学的地位和任务(培养目标)、课程体系和教学内容、教学方法和手段、师资和教材建设以及基础硬件设施的建设等多方面提出了指导性的意见。其中最重要的一点是提出了计算机基础教学的三层次教学模式(即计算机文化基础、计算机技术基础和计算机应用基础)和课程体系。高级程序设计语言类课程属于课程体系的第二个层次。经过多年的教学实践,教育部高教司于2003年又提出了"进一步加强高校计算机基础教学的几点意见(征求意见稿)"(俗称计算机基础教育白皮书),针对计算机基础教学的现状与发展,提出了计算机基础教学改革的指导思想;按照分类、分层次组织教学的思路,提出了计算机基础课教学内容的知识结构与课程设置。在附件中给出了六门计算机基础教学的典型核心课程,并给出了这六门课程的教学大纲。这六门课程包括:大学计算机基础、计算机程序设计基础(含C和C++)、计算机硬件技术基础(微机原理与接口、单片机原理与应用)、数据库技术与应用、多媒体技术与应用、网络技术与应用。另外,全国高校计算机基础教育研究会成立了"高等院校计算机基础教育改革课题研究组"。该研究组于2004年出版了课题报告《中国高等院校计算机基础教育课程体系2004》(简称CFC 2004),对国内计算机基础教育进行了全面的总结和系统研究,是指导计算机教育改革的重要文件。本书正是依据上述"白皮书"中给出的"计算机程序设计基础(C++)"的大纲编写而成,同时也满足CFC 2004中所给的C++语言的主要内容。 编写内容和教学要求目前,各大专院校非计算机专业,尤其是电类专业,普遍选用程序设计语言C++作为程序设计教学的第一语言。为什么要选用面向对象的程序设计语言C++呢?因为目前市场上绝大部分通用的计算机软件开发工具都是基于面向对象的编程工具,如Visual C++、Delphi、Java和C# .NET等。随着计算机应用的普及,迫切需要大专院校学生具备面向对象的编程能力才能够适应社会的需求。本书就是为了满足这个层次的学生需求而编写的。本书内容是使用面向对象通用软件开发工具的基础。本书第1~9章是结合C++语言的基本语法,介绍传统的面向过程的程序设计。内容包括C++语言基本数据类型、基本运算、基本输入/输出、结构化流程控制语句、函数、编译预处理、数组、结构体、指针和链表等内容,基本上是传统的C程序设计语言的内容。第二部分第10~15章是面向对象的程序设计,以面向对象的三大特点为主线,讲述类和对象的基本概念,类的封装、继承和多态,函数模板和类模板,并讲述了输入/输出流类体系、文件操作等内容。本书作者主张的教学理念是注重程序设计算法的教学,注重对学生算法思路的逻辑训练,而不拘泥于语法要素的细枝末节。本书通俗易懂,各章节配有大量的例题和习题,主要是针对各章的教学难点和重点以及各种算法而设计的。在选择例题和习题时,尽量涵盖目前程序设计语言课程的各种算法类型。使初学者拿到习题后,能够在本书例题中找到相似的例子,这样对于初学者来说,解题就不是一件非常困难的事情了。除了进行课本教学外,教师还可以根据实际情况选择安排课程设计,选用适合不同层次学生的课程设计题目,加强学生动手编制较大规模程序的能力。有关课程设计的书可参考机械工业出版社出版的《C++程序设计课程设计》(ISBN: 7-111-14565-8)。本书第1、2、9~14章由王珊珊编写,第5~8章由臧洌编写,第3、4、15章由张志航编写,全书由王珊珊负责统稿。讲述本书全部内容的建议学时为:理论教学56学时,课程设计16学时(内容另行安排),上机实验60学时。本书的实验环境是Visual C++ 6.0,本书中全部的例题和习题均在该环境中通过编译和运行。本书可能会存在疏漏、不妥和错误之处,恳请广大读者指正。联系方法作者电子邮件地址:shshwang@nuaa.edu.cn(王珊珊)coralwang2002@yahoo.com. cn(王珊珊)zangliwen@yahoo.com.cn(臧洌)zqwzzh@nuaa.edu.cn(张志航) 作 者 2005年10月20日于南京航空航天大学
