[考研类试卷]计算机专业基础综合历年真题试卷汇编1及答案与解析.doc
《[考研类试卷]计算机专业基础综合历年真题试卷汇编1及答案与解析.doc》由会员分享,可在线阅读,更多相关《[考研类试卷]计算机专业基础综合历年真题试卷汇编1及答案与解析.doc(19页珍藏版)》请在麦多课文档分享上搜索。
1、计算机专业基础综合历年真题试卷汇编 1 及答案与解析一、单项选择题1-40 小题,每小题 2 分,共 80 分。下列每题给出的四个选项中,只有一个选项是最符合题目要求的。1 设 n 是描述问题规模的非负整数,下面程序片段的时间复杂度是_。x=2;while(xn2)x=2*x;(A)O(log 2n)(B) O(n)(C) O(nlog2n)(D)O(n 2)2 知两个长度分别为 m 和 n 的升序链表,若将它们合并为一个长度为 m+n 的降序链表,则最坏情况下的时间复杂度是_。(A)O(n)(B) O(mn)(C) O(min(m,n)(D)O(max(m,n)3 求整数 n(n0) 阶乘的
2、算法如下,其时间复杂度是_。int fact(int n)if(n=1)return 1;return n*fact(n-1),(A)O(log 2n)(B) O(n)(C) O(nlog2n)(D)O(n 2)4 下列程序段的时间复杂度是_。count=0;for(k=1,k=n ;k*=2)for(j=1,j=n,j+)count+;(A)O(log 2n)(B) O(n)(C) O(nlog2n)(D)O(n 2)5 若元素 a, b,c ,d,e,f 依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈操作,则不可能得到的出栈序列是_。(A)dcebfa(B) cbdaef(
3、C) bcaefd(D)afedcb6 元素 a,b, c,d,e 依次进入初始为空的栈中,若元素进栈后可停留、可出栈,直到所有元素都出栈,则在所有可能的出栈序列中,以元素 d 开头的序列个数是_。(A)3(B) 4(C) 5(D)67 一个栈的入栈序列为 1,2,3,n,其出栈序列是 P1,p 2,p 3,P n。若p2=3,则 p3 可能取值的个数是_。(A)n-3(B) n-2(C) n-1(D)无法确定8 循环队列放在一维数组 A0M-1中,end1 指向队头元素,end2 指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳 M-1个元素。初始时为空。下列判
4、断队空和队满的条件中,正确的是_。(A)队空:end1=end2;队满:end1=(end2+1)mod M(B)队空:end1=end2;队满:end2=(end1+1)mod (M-1)(C)队空:end2=(end1+1)mod M;队满:end1=(end2+1)rood M(D)队空:end1=(end2+1)mod M;队满:end2=(end1+1)mod (M-1)9 已知循环队列存储在一维数组 A0n-1中,且队列非空时 front 和 rear 分别指向队头元素和队尾元素。若初始时队列为空,且要求第 1 个进入队列的元素存储在A0处,则初始时 front 和 rear 的值
5、分别是_。(A)0,0(B) 0,n-1(C) n-1,0(D)n-1 ,n-110 某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作。若元素a,b,c,d,e 依次入此队列后再进行出队操作,则不可能得到的出队序列是_。(A)bacde(B) dbace(C) dbcae(D)ecbad11 为解决计算机主机与打印机之间速度不匹配问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是_。(A)栈(B)队列(C)树(D)图12 设栈 S 和队列 Q 的初始状态均为空,元素 a, b,c ,d,e,f,g 依次进
6、入栈S。若每个元素出栈后立即进入队列 Q,且 7 个元素出队的顺序是b,d,c,f,e ,a,g,则栈 S 的容量至少是_。(A)1(B) 2(C) 3(D)413 已知操作符包括+、 -、(和)。将中缀表达式 a+b-a*(c+d)e-f)+g转换为等价的后缀表达式 ab+acd+ef-*-g+时,用栈来存放暂时还不能确定运算次序的操作符,若栈初始时为空,则转换过程中同时保存在栈中的操作符的最大个数是_。(A)5(B) 7(C) 8(D)1114 已知程序如下:Int S(int n)return (n=0)20:s(n-1)+n ;Void main()ciout S(1);程序运行时使用
7、栈来保存调用过程的信息,自栈底到栈项保存的信息依次对应的是_。(A)main()S(1)S(0)(B) S(0)S(1)main()(C) main()S(0)S(1)(D)S(1)S(0)main()二、综合应用题41-47 小题,共 70 分。14 设将 n(n1) 个整数存放到一维数组 R 中。试设计一个在时间和空间两方面都尽可能高效的算法。将 R 中保存的序列循环左移 p(0pn)个位置,即将 R 中的数据由(X 0,X 1,X n-1)变换为 (Xp,X p+1,X n-1,X 0,X 1,X p-1)。 要求:15 给出算法的基本设计思想。16 根据设计思想,采用 C 或 C+或
8、Java 语言描述算法,关键之处给出注释。17 说明你所设计算法的时间复杂度和空间复杂度。17 已知一个整数序列 A=(a0,a 1,a n+1),其中 0ain(0i n)。若存在ap1=ap2=apm=x 且 mn2(0p kn,1km),则称 x 为 A 的主元素。例如A=(0,5,5,3,5,7,5,5),则 5 为主元素;又如A=(0,5,5,3,5,1,5,7),则 A 中没有主元素。假设 A 中的 n 个元素保存在一个一维数组中,请设计一个尽可能高效的算法 j 找出 A 的主元素。若存在主元素,则输出该元素;否则输出-1。 要求:18 给出算法的基本设计思想。19 根据设计思想,
9、采用 C 或 C+或 Java 语言描述算法,关键之处给出注释。20 说明你所设计算法的时间复杂度和空间复杂度。20 已知一个带有表头结点的单链表,结点结构为: 假设该链表只给出了头指针 list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第 k 个位置上的结点(k 为正整数)。若查找成功,算法输出该结点的 data 域的值,并返回 1;否则,只返回 0。要求:21 描述算法的基本设计思想。22 描述算法的详细实现步骤。23 根据设计思想和实现步骤,采用程序设计语言描述算法(使用 C、C+或 Java 语言实现),关键之处请给出简要注释。23 假定采用带头结点的单链表保存
10、单词,当两个单词有相同的后缀时,则可共享相同的后缀存储空间,例如,“loading”和“being”的存储映像如下图所示。设 str1 和 str2 分别指向两个单词所在单链表的头结点,链表结点结构为 ,请设计一个时间上尽可能高效的算法,找出由 str1 和 str2 所指向两个链表共同后缀的起始位置(如图中字符i 所在结点的位置 p)。要求:24 给出算法的基本设计思想。25 根据设计思想,采用 C 或 C+或 JAVA 语言描述算法,关键之处给出注释。26 说明你所设计算法的时间复杂度。26 用单链表保存 m 个整数,结点的结构为:datalink,且data n(n 为正整数)。现要求设
11、计一个时间复杂度尽可能高效的算法,对于链表中 data 的绝对值相等的结点,仅保留第一次出现的结点而删除其余绝对值相等的结点。例如,若给定的单链表 head 如下: 则删除结点后的 head 为: 要求:27 给出算法的基本设计思想。28 使用 C 或 C+语言,给出单链表结点的数据类型定义。29 根据设计思想,采用 C 或 C+语言描述算法,关键之处给出注释。30 说明你所设计算法的时间复杂度和空间复杂度。计算机专业基础综合历年真题试卷汇编 1 答案与解析一、单项选择题1-40 小题,每小题 2 分,共 80 分。下列每题给出的四个选项中,只有一个选项是最符合题目要求的。1 【正确答案】 A
12、【试题解析】 在程序中,执行频率最高的语句为“x=2*x”。设该语句共执行了 T(n)次,则 2T(n)+1n 2,故 T(n)=log2(n2)-1=log 2n-2,得 T(n)=O(log2n)。【知识模块】 数据结构2 【正确答案】 D【试题解析】 两个升序链表合并,两两比较表中元素,每比较一次确定一个元素的链接位置(取较小元素,头插法)。当一个链表比较结束后,将另一个链表的剩余元素插入即可。最坏的情况是两个链表中的元素依次进行比较,直到两个链表都到表尾,即每个元素都经过比较,时间复杂度为 O(m+n)=0(max(m,n) 。【知识模块】 数据结构3 【正确答案】 B【试题解析】 本
13、算法是一个递归运算,即算法中出现了调用自身的情形。递归的边界条件是 n1,每调用一次 fact(),传入该层 fact()的参数值减 1。采用递归式来表示时间复杂度有 则 T(n)=T(n-1)+1=T(n-2)+2=T(1)+n-1=O(n),故时间复杂度为 O(n)。【知识模块】 数据结构4 【正确答案】 C【试题解析】 内层循环条件 j=n 与外层循环的变量无关,每次循环 j 自增 1,每次内层循环都执行 n 次。 外层循环条件为 k=n,增量定义为 k*=2,可知循环次数为 2k=n ,即 k=log2n。所以内层循环的时间复杂度是 O(n),外层循环的时间复杂度是 O(log2n)。
14、对于嵌套循环,根据乘法规则可知,该段程序的时间复杂度 T(n)=T1(n)*T2(n)=O(n)*O(log2n)=O(nlog2n),选 C。【知识模块】 数据结构5 【正确答案】 D【试题解析】 选项 A 可由in、in、in、in 、out 、out 、in 、out、out、in、out、out 得到;选项 B 可由in、in、in、out、out、in、out 、out、in、out、in、out 得到;选项 C 可由in、in、out 、 in、out、out、in 、in、out、in、out、out 得到:选项 D 可由in、out、in、 in、in、in 、 in、out、
15、out、out、out 、out得到,但题意要求不允许连续三次退栈操作,故 D 不可能得到。【知识模块】 数据结构6 【正确答案】 B【试题解析】 d 为第 1 个出栈元素,则 d 之前的元素必定是进栈后在栈中停留。因而出栈顺序必为 dcba, e 的顺序不定,在任一“_”上都有可能,一共有 4 种可能。【知识模块】 数据结构7 【正确答案】 C【试题解析】 显然,3 之后的 4,5,n 都是 P3 可取的数(一直进栈直到该数入栈后马上出栈)。接下来分析 1 和 2:P 1 只能是 3 之前入栈的数(可能是 1 或 2),当P1=1 时,P3 可取 2;当 P1=2 时,P 3 可取 1,故
16、P3 可能取除 3 之外的所有数,个数为 n-1。【知识模块】 数据结构8 【正确答案】 A【试题解析】 end1 指向队头元素,那么可知出队的操作是先从 Aend1读数,然后 end1 再加 1。end2 指向队尾元素的后一个位置,那么可知入队操作是先存数到Aend2,然后 end2 再加 1。若把 A0储存第一个元素,当队列初始时,入队操作是先把数据放到 A0,然后 end2 自增,即可知 end2 初值为 0;而 end1 指向的是队头元素,队头元素的在数组 A 中的下标为 0,所以得知 end1 初值也为 0,可知队空条件为 end1=end2;然后考虑队列满时,因为队列最多能容纳 M
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考研 试卷 计算机专业 基础 综合 历年 汇编 答案 解析 DOC
