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