本书包括两部分内容。部分为第1~9章,以C++语言的基本语法为起点讲述面向过程的程序设计,内容包括基本数据类型、基本控制结构、函数、数组、结构体、指针和链表。第二部分为第10~15章,结合C++语言的应用实例,讲述面向对象程序设计的基本概念,内容包括类和对象、继承和派生、多态以及输入输出和文件操作。本书适用于程序设计语言的初学者,也适用于大学本科理工类各专业学习C++程序设计语言的学生,同时适用于自学C++语言的读者。
编写背景各大专院校工科类专业开设了程序设计语言类课程,尤其是电类专业普遍开设了C++程序设计课程,因此需要一本适用于初学者的教材。本书就是为了满足这个层次的读者需求而编写的。本书包含两个方面的内容:1)面向过程的程序设计,目的是让初学者掌握基本的程序设计知识。2)面向对象的程序设计,让初学者了解面向对象程序设计的基本概念,为今后学习以面向对象为基础的通用软件开发工具如Microsoft Visual C++、Delphi、C#.net和Visual Studio等打下坚实的基础。
2005年和2011年本教材分别出版了第1版和第2版,被国内十几所高校和培训机构所使用,并取得了良好的反响。本书在前两版的基础上,修正了部分不足,文字描述更准确;程序在Visual Studio 2013环境中运行,尽量做到符合C++11新标准,并对C++11新标准进行了一定的解释;对源程序例子进行了少量增删,并对源程序编辑格式做了调整,即采用C++标准命名空间的方式编写程序。调整前和调整后源程序书写格式如下:
#include //调整前程序书写格式,使用带.h的头文件#include void main() //主函数无返回值{//…语句}#include //调整后程序书写格式,使用不带.h的头文件#include using namespace std; //使用C++标准命名空间int main() //主函数的返回值类型为int{//…语句return 0;}编写内容和教学要求本书分两部分,第一部分包括第1~9章,结合C++语言的基本语法,介绍传统的面向过程的程序设计,内容包括C++语言基本数据类型、基本运算、基本输入输出、结构化流程控制语句、函数、编译预处理、数组、结构体、指针和链表等,基本上是传统的C程序设计语言的内容。第二部分包括第10~15章,以面向对象的三大特点为主线,讲述类和对象的基本概念,类的封装、继承和多态,以及函数模板和类模板,并讲述了输入输出流类体系、文件操作等内容。
本书作者的教学理念是注重程序设计算法的教学,注重对学生算法思路的逻辑训练,而不拘泥于语法要素的细枝末节。本书通俗易懂,配有大量针对各章的教学难点和重点以及各种算法而设计的例题和习题。在选择例题和习题时,尽量涵盖目前程序设计语言课程的各类算法。初学者阅读习题时,能够在教材的例题中找到相似的例子进行模仿,这样对初学者来说解题就不是一件非常困难的事情。除了进行理论教学和上机练习外,教师还可以根据实际情况选用适合不同层次学生的课程设计题目,以加强学生动手编制较大规模程序的能力。
本书第1、2、9~14章由王珊珊老师编写,第5~8章由臧洌老师编写,第3、4、15章由张志航老师编写,全书由王珊珊负责统稿。
本书的实验环境是Visual Studio 2013,书中全部的例题和习题均在该环境中通过编译和运行。
本书配套的上机实验和课程设计教材为《C++语言程序设计上机实验及学习指导》,王珊珊、臧洌和张志航编著,2016年1月由南京大学出版社出版。
本书可能会存在疏漏、不妥和错误之处,恳请专家和广大读者指教和商榷。
作者联系方式:
(张志航)作者2016年8月20日于南京航空航天大学
第1章 C++ 概述
1.1 计算机语言与程序
1.1.1 机器语言与程序
1.1.2 汇编语言与程序
1.1.3 高级语言与程序
1.2 从C到C++
1.3 程序设计方法
1.3.1 结构化程序设计方法
1.3.2 面向对象的程序设计方法
1.4 简单的C++程序介绍
1.5 程序开发的步骤
习题1
第2章 数据类型、运算符和表达式
2.1 保留字和标识符
2.1.1 保留字
2.1.2 标识符
2.2 C++的基本数据类型
2.3 常量和变量
2.3.1 常量
2.3.2 符号常量
2.3.3 变量
2.4 基本运算符和表达式
2.4.1 C++运算符及表达式简介
2.4.2 算术运算符和算术表达式
2.4.3 运算优先级和结合性
2.4.4 关系运算符和关系表达式
2.4.5 逻辑运算符和逻辑表达式
2.4.6 位运算符和位运算表达式
2.4.7 自增、自减运算符和表达式
2.4.8 赋值运算符和赋值表达式
2.4.9 逗号运算符和逗号表达式
2.4.10 sizeof( ) 运算符和表达式
2.4.11 逻辑表达式运算优化的副作用
2.5 类型转换
2.5.1 赋值时的自动类型转换
2.5.2 各种类型运算量混合运算时的自动类型转换
2.5.3 强制类型转换
习题2
第3章 简单的输入/输出
3.1 传统的输入/输出函数实现方法
3.2 cout输出流
3.2.1 输出八进制数、十六进制数和用科学计数法表示的数
3.2.2 输出字符或字符串
3.3 cin输入流
3.3.1 输入十六进制或者八进制数据
3.3.2 输入字符数据
3.4 总结
习题3
第4章 C++的流程控制
4.1算法概述
4.1.1 算法的作用和类别
4.1.2 算法的设计原则
4.1.3 算法的表示工具
4.1.4 结构化程序设计中基本结构的表示
4.2 C++程序的结构和语句
4.3 选择结构语句的使用
4.3.1 if语句
4.3.2 if语句的嵌套使用
4.3.3 条件运算符
4.3.4 switch语句
4.4循环结构语句的使用
4.4.1 goto语句及标号的使用
4.4.2 while语句
4.4.3 for语句
4.4.4 do-while语句
4.4.5 break语句和continue语句
4.4.6 循环的嵌套
4.5 控制语句的应用举例
习题4
第5章 函数
5.1 概述
5.2 函数的定义与调用
5.2.1 函数的定义
5.2.2 函数的调用
5.2.3 函数的参数
5.3 函数的原型声明
5.4 函数的嵌套调用和递归调用
5.4.1 函数的嵌套调用
5.4.2 函数的递归调用
5.5 内联函数
5.6 函数重载
5.6.1 参数类型不同的重载函数
5.6.2 参数个数不同的重载函数
5.7 使用C++系统函数
5.8 作用域和存储类别
5.8.1 作用域
5.8.2 存储类别
5.8.3 全局变量的作用域的扩展和限制
5.9 程序的多文件组织
5.9.1 内部函数和外部函数
5.9.2 多文件组织的编译和连接
习题5
第6章 编译预处理
6.1 宏定义
6.1.1 不带参数的宏定义
6.1.2 带参数的宏定义
6.2 “文件包含”处理
*6.3 条件编译
习题6
第7章 数组
7.1 数组的定义及应用
7.1.1 一维数组的定义及使用
7.1.2 一维数组作函数参数
7.1.3 多维数组的定义及使用
7.1.4 二维数组作函数参数
7.2 字符数组的定义及应用
7.2.1 字符数组的定义
7.2.2 字符数组的初始化
7.2.3 字符数组的使用
7.2.4 字符串和字符串结束标志
7.2.5 字符数组的输入/输出
7.2.6 字符串处理函数
7.2.7 字符数组应用举例
习题7
第8章 结构体、共用体和枚举类型
8.1 结构体的定义及应用
8.1.1 结构体类型的定义
8.1.2 结构体类型变量的定义
8.1.3 结构体类型变量及其成员的引用
8.1.4 结构体数组
8.2 共用体的定义及应用
8.2.1 共用体类型及其变量的定义
8.2.2 共用体类型变量的引用
8.2.3 共用体数据类型的特点
8.3 枚举类型
8.3.1 枚举类型的定义
8.3.2 枚举类型变量的定义
8.3.3 枚举类型变量的使用
习题8
第9章 指针、引用和链表
9.1 指针和指针变量
9.1.1 指针的概念
9.1.2 指针变量的定义
9.1.3 有关指针的运算符 & 和 *
9.1.4 指针变量的初始化
9.1.5 直接访问和间接访问
9.1.6 地址值的输出
9.2 指针作函数参数
9.2.1 基本类型量作函数参数
9.2.2 指针变量作函数参数
9.3 指针和指向数组的指针
9.3.1 一维数组与指针
9.3.2 一维数组元素指针作函数参数
9.3.3 指针和字符串
9.3.4 二维数组与指针
9.3.5 获得函数处理结果的几种方法
9.4 指针数组
9.4.1 指针数组的定义和使用
9.4.2 使用指针数组处理二维数组
9.4.3 利用字符指针数组处理字符串
9.4.4 main 函数的参数
9.5 指向指针的指针
9.6 指针和函数
9.6.1 函数指针
9.6.2 返回指针值的函数(指针函数)
9.7 指针小结
9.8 引用、const型变量和const型指针
9.8.1 引用类型变量的说明及使用
9.8.2 引用和函数
9.8.3 const型量
9.9 存储空间的动态分配和释放
9.9.1 new和delete运算符
9.9.2 使用new和delete运算符的注意事项
9.10 链表及其算法
9.10.1 结构体与指针
9.10.2 链表的概念的引入
9.10.3 链表的常用算法
9.11 用typedef定义新类型名
习题9
第10章 类和对象
10.1 类和对象的定义
10.1.1 从结构体到类
10.1.2 类和对象的定义
10.1.3 对象成员的访问
10.1.4 成员函数的定义