2022 软件基础考试大纲
2022 软件基础考试大纲
程序设计基础
一、C++ 语言基础
考试内容
基本数据类型、enum 数据类型、运算符、控制语句
考试要求
- 理解计算机信息的存储于表示,掌握 C++ 的基本数据类型的用法。
- 掌握运算符与表达式的基本用法。
- 理解逗号表达式与条件表达式的作用。
- 掌握
enum枚举类型的定义、枚举变量声明及使用。 - 掌握和运用三种 (
if、if…else、switch) 选择语句。 - 掌握和运用三种 (
while、for、do…while) 循环语句。 - 掌握和运用其他 (
break、continue) 控制语句。
二、C++ 程序的结构(一):函数
考试内容
函数定义、函数声明、函数调用、函数的参数传递、递归调用、函数重载、函数模板
考试要求
- 掌握函数定义的语法形式,熟练运用自定义函数来实现多函数程序设计。
- 理解函数声明的作用,掌握函数声明的用法。
- 理解函数调用的过程。
- 明确参数传递的意义,理解和掌握函数调用中参数传递的三种参数传递调用:传值调用、引用调用、传地址调用。
- 掌握和运用递归函数的概念、算法和实现方法。
- 理解函数重载的概念,掌握函数重载的实现方法。
- 理解函数模板的概念,掌握函数模板的实现方法。
三、C++ 程序的结构(二):类
考试内容
抽象数据类型、类的定义、对象创建、构造函数与析构函数、公共接口函数、工具函数
类的组合、类模板
考试要求
- 理解面向对象的思想,理解面向对象方法中的抽象概念。
- 理解面向对象程序设计中“封装”概念和抽象数据类型的概念。
- 掌握 C++ 语言中类的定义方法。
- 掌握创建对象的方法,掌握通过对象访问类的公共接口成员的方法。
- 理解“
.”操作符和“->”操作符,掌握它们的使用方法。 - 理解构造函数的作用,掌握构造函数的声明、定义的方法。
- 理解拷贝构造函数的作用,掌握拷贝构造函数的声明、定义的方法。
- 理解析构函数的作用,掌握析构函数的声明、定义的方法。
- 理解类的公共接口函数成员的功能,掌握它们的声明与定义的方法。
- 理解类的工具函数成员的作用,掌握它们的声明与定义的方法。
- 掌握类的对象成员的声明、定义和使用的方法。
- 了解类模板实例化的概念,掌握类模板的定义与使用的方法。
四、C++ 语言的存储与访问属性
考试内容
作用域、可见性、静态与动态的生存期、静态数据、常量数据、共享数据、
类的静态函数成员与静态数据成员、类的常量函数成员与常量数据成员、this 指针、
友元函数与友元类
考试要求
- 理解标识符在程序中的作用域、可见性的基本概念。
- 理解标识符在内存中的生存期、存储区域的基本概念。
- 在函数中,掌握
static关键字的用法。 - 在函数中,掌握
const关键字的用法。 - 在类中,掌握
static关键字的用法。 - 在类中,掌握
const关键字的用法。 - 在类中,掌握
this指针的用法。 - 在函数中,掌握
friend关键字的用法。 - 在类中,掌握
friend关键字的用法。
五、数组、指针与字符串
考试内容
数组、引用、指针、字符串、动态内存分配、深拷贝与浅拷贝
考试要求
- 理解一维/二维数组的概念。
- 掌握一维/二维数组变量的声明、初始化以及数组之间的赋值方法。
- 掌握下标运算符
[]和sizeof运算符的使用方法。 - 掌握一维/二维数组作为函数的参数传递的用法。
- 掌握一维/二维数组作为类的数据成员的使用方法。
- 掌握一维/二维对象数组的使用方法。
- 理解引用的概念。
- 掌握引用作为函数的参数传递的用法。
- 理解指针的概念,掌握指针运算符的使用方法。
- 掌握指针作为函数的参数传递的用法。
- 理解数组与指针之间的关系,掌握指针数组的用法,掌握对象数组指针的用法。
- 理解动态内存分配的概念,掌握
new和delete运算符的使用方法,掌握一维/二维动态数组、动态数组类、动态对象的创建方法。 - 理解深拷贝、浅拷贝的概念。
- 理解拷贝构造函数、动态内存分配与深拷贝、浅拷贝之间的关系。
- 掌握 C-style 的字符串的用法 (
<cstring>). - 掌握
vector类模板的用法。 - 掌握
string类的用法。
六、类的继承与派生
考试内容
继承关系、派生类、派生类的构造与析构函数、多级继承关系中成员访问、虚继承
考试要求
- 理解面向对象程序设计中继承与派生的概念。
- 掌握 C++ 语言中派生类的语法格式,掌握派生类的定义方法。
- 理解继承关系中成员访问的方式。
- 掌握单/多继承关系中构造函数与析构函数的定义方法及调用顺序。
- 了解多级多继承中成员的访问方式。
七、面向对象程序设计的多态性
考试内容
多态性、运算符重载、虚函数、纯虚函数、抽象类
考试要求
- 理解面向对象程序设计中多态性的概念。
- 理解动态绑定与静态绑定的概念,理解两者之间的区别与联系,了解它们各自实现的原理。
- 掌握运算重载的基本方法。
- 理解虚函数的概念,掌握虚函数的用法。
- 理解函数同名覆盖的概念,比较它与函数重载的不同之处。
- 理解抽象类的概念,理解纯虚函数的概念,掌握纯虚函数的用法。
- 理解多态性与虚函数和纯虚函数之间的关系。
八、流类库与输入输出
考试内容
C++ I/O 流、标准输入与输出、顺序文件的输入与输出
考试要求
- 了解 C++ I/O 流类的类图及类之间的关系。
- 掌握
\<istream>中的基本操作,如:cin、cin.get、cin.getline、cin.put. - 掌握
<ostream>中的基本操作,包括流的格式化控制与流操作符。 - 掌握
<fstream>中,顺序文件的创建、写出和读取。
数据结构
【考查目标】
- 理解数据结构的基本概念;掌握数据的逻辑结构、存储结构及其差异,以及各种基本操作的实现。
- 在掌握基本的数据处理原理和方法的基础上,能够针对具体应用问题进行算法设计与分析。
- 能够选择合适的数据结构和方法进行问题求解;具备采用 C++ 语言设计与实现算法的能力。
【考查范围】
一、数据结构和算法的基本概念及算法分析的基本方法
二、线性表
(一) 线性表的定义和基本操作
(二) 线性表的实现
- 顺序存储结构
- 链式存储结构
- 线性表的应用
三、栈、队列和数组
(一) 栈和队列的基本概念
(二) 栈和队列的顺序存储结构
(三) 栈和队列的链式存储结构
(四) 栈和队列的应用
四、树与二叉树
(一) 树的基本概念
(二) 二叉树
- 二叉树的定义及其主要特征
- 二叉树的顺序存储结构和链式存储结构
- 二叉树的遍历
(三) 树、森林
- 树的存储结构
- 森林与二叉树的转换
- 树和森林的遍历
(四) 树和二叉树的应用
- 二叉排序树
- 平衡二叉树
- 哈夫曼 (Huffman) 树和哈夫曼编码
五、图
(一) 图的概念
(二) 图的存储及基本操作
- 邻接矩阵法
- 邻接表法
(三) 图的遍历
- 深度优先搜索
- 广度优先搜索
(四) 图的基本应用
- 最小(代价)生成树
- 最短路径
- 拓扑排序
- 关键路径
六、查找
(一) 查找的基本概念
(二) 顺序查找法
(三) 折半查找法
(四) B- 树及其基本操作、B+ 树的基本概念
(五) 散列 (Hash) 表
(六) 查找算法的分析及应用
七、内部排序
(一) 排序的基本概念
(二) 插入排序
- 直接插入排序
- 折半插入排序
(三) 冒泡/气泡排序 (bubble sort)
(四) 简单选择排序
(五) 希尔排序 (shell sort)
(六) 快速排序
(七) 堆排序
(八) 二路归并排序 (merge sort)
(九) 基数排序
(十) 各种内部排序算法的比较
(十一) 内部排序算法的应用