2018年汕头大学考研试题830 计算机基础综合
- 格式:pdf
- 大小:102.62 KB
- 文档页数:3


2018年全国硕士研究生入学统一考试计算机学科专业基础综合试卷一、单项选择题:140小题,每小题2分,共80分。
下列每题给出的四个选项中,只有一个选项符合题目要求。
请在答题卡上将所选项的字母涂黑。
b5E2RGbCAP 1.已知程序如下:ints(int n>{ return (n<=0> ? 0 : s(n-1> +n。
}void main(>{ cout<< s(1>。
}程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息一次对应的是A.main(>->S(1>->S(0> B.S(0>->S(1>->main(>p1EanqFDPwC.main(>->S(0>->S(1> D.S(1>->S(0>->main(>DXDiTa9E3d【参考答案】 D【考查知识点】栈的基本概念和函数调用的原理。
2.先序序列为a,b,c,d的不同二叉树的个数是A.13B.14C.15D.16【参考答案】 C【考查知识点】二叉树的基本概念。
3.下列选项给出的是从根分别到达两个叶节点路径上的权值序列,能属于同一棵哈夫曼树的是A.24,10,5和 24,10,7B.24,10,5和24,12,7C.24,10,10和 24,14,11 D.24,10,5和 24,14,6【参考答案】 C【考查知识点】哈夫曼树的原理。
4.现在有一颗无重复关键字的平衡二叉树<AVL树),对其进行中序遍历可得到一个降序序列。
下列关于该平衡二叉树的叙述中,正确的是RTCrpUDGiTA.根节点的度一定为2B.树中最小元素一定是叶节点C.最后插入的元素一定是叶节点D.树中最大元素一定是无左子树【参考答案】 B【考查知识点】树的中序遍历和AVL树的基本概念。
5.设有向图G=(V,E>,顶点集V={V0,V1,V2,V3},边集E={<v0,v1>,<v0,v2>,<v0,v3>,<v1,v3>},若从顶点V0 开始对图进行深度优先遍历,则可能得到的不同遍历序列个数是5PCzVD7HxAA.2 B.3 C.4 D.5【参考答案】 D【考查知识点】图的深度优先遍历。
2018年全国硕士研究生入学统一考试计算机科学与技术学科联考计算机学科专业基础综合试题一、单项选择题(第1~40小题,每小题2分,共80分。
下列每题给出的四个选项中,只有一个选项最符合试题要求)1.若栈S1中保存整数,栈S2中保存运算符,函数F()依次执行下述各步操作:(1)从S1中依次弹出两个操作数a和b;(2)从S2中弹出一个运算符op;(3)执行相应的运算b op a;(4)将运算结果压入S1中。
假定S1中的操作数依次是5,8,3,2(2在栈顶),S2中的运算符依次是*,-,+(+在栈顶)。
调用3次F()后,S1栈顶保存的值是。
A.-15B.15C.-20D.202.现有队列Q与栈S,初始时Q中的元素依次是1,2,3,4,5,6(1在队头),S为空。
若仅允许下列3种操作:①出队并输出出队元素;②出队并将出队元素入栈;③出栈并输出出栈元素,则不能得到的输出序列是。
A.1,2,5,6,4,3B.2,3,4,5,6,1C.3,4,5,6,1,2D.6,5,4,3,2,13.设有一个12×12的对称矩阵M,将其上三角部分的元素m i,j(1≤i≤j≤12)按行优先存入C语言的一维数组N中,元素m6,6在N中的下标是。
A.50B.51C.55D.664.设一棵非空完全二叉树T的所有叶结点均位于同一层,且每个非叶结点都有2个子结点。
若T有k个叶结点,则T的结点总数是。
A.2k-1B.2kC.k2D.2k-15.已知字符集{a,b,c,d,e,f},若各字符出现的次数分别为6,3,8,2,10,4,则对应字符集中各字符的哈夫曼编码可能是。
A.00,1011,01,1010,11,100B.00,100,110,000,0010,01C.10,1011,11,0011,00,010D.0011,10,11,0010,01,0006.已知二叉排序树如下图所示,元素之间应满足的大小关系是。
A.x1<x2<x5B.x1<x4<x5C.x3<x5<x4D.x4<x3<x57.下列选项中,不是如下有向图的拓扑序列的是。
2018年计算机学科专业基础综合试题参考答案一、单项选择题1.B2.C3.A4.A5.A6.C7.D8.B9.C10.D11.A12.D13.C14.A15.A16.B17.C18.B19.A20.D21.B22.C23.C24.D25.B26.A27.C28.D29.D30.A31.D32.C33.B 34.C 35.D 36.D 37.D 38.C 39.B 40.D二、综合应用题41.解析:1)题目要求算法时间上尽可能高效,因此采用空间换时间的办法。
分配一个用于标记的数组B[n],用来记录A中是否出现了1~n中的正整数,B[0]对应正整数1,B[n-1]对应正整数n,初始化B中全部为0。
由于A中含有n个整数,因此可能返回的值是1~n+1,当A中n个数恰好为1~n时返回n+1。
当数组A中出现了小于等于0或者大于n的值时,会导致1~n中出现空余位置,返回结果必然在1~n中,因此对于A中出现了小于等于0或者大于n的值可以不采取任何操作。
经过以上分析可以得出算法流程:从A[0]开始遍历A,若0<A[i]<=n,则令B[A[i]-1]=1;否则不做操作。
对A遍历结束后,开始遍历数组B,若能查找到第一个满足B[i]==0的下标i,返回i+1即为结果,此时说明A中未出现的最小正整数在1~n之间。
若B[i]全部不为0,返回i+1(跳出循环时i=n,i+1等于n+1),此时说明A中未出现的最小正整数是n+1。
int findMissMin(int A[],int n){int i,*B; //标记数组B=(int *)malloc(sizeof(int)*n); //分配空间memset(B,0,sizeof(int)*n); //赋初值为0for(i=0;i<n;i++)if(A[i]>0&&A[i]<=n) //若A[i]的值介于1~n,则标记数组BB[A[i]-1]=1;for(i=0;i<n;i++) //扫描数组B,找到目标值if (B[i]==0) break;return i+1; //返回结果}3)时间复杂度:遍历A一次,遍历B一次,两次循环内操作步骤为O(1)量级,因此时间复杂度为O(n)。