中科院早期试题

来源:互联网 发布:你的名字结绳淘宝 编辑:程序博客网 时间:2024/06/10 07:28
 
      一、 填空题(每小题2分,共80分)
1. A node in a tree that does not have any children is called 
 (a) a leaf
  (b) an internal node  (c) a root  (d) an empty node 
2. 
对于一棵深度为2的二叉树,它的总节点数:
 (a) 
至多7 (b)至多2  (c) 节点数不限 (d) 至多4 
3. 
下面的伪码是对二叉树操作算法的片段:
  print( node )
      {    if( there is a left child )  print( left child );
      print  data;
      if( there is a right child )  print( right child );      }
这个算法是:
a)折半查找; b)前序遍历; c)中序遍历; d)后序遍历;
4. 
下面哪个序列不是折半查找(二分查找)所访问的数值序列
(a) 10, 20, 30, 40, 50
 (b) 50, 40, 30, 20, 10 (c) 10, 20, 30, 15, 18 (d) 30, 50, 40, 45, 42
5. 
递归函数可以调用自身多少次?
(a) 
只多1;   (b) 任意次数;  (c) 0 ;  (d) 至多2;
6. 
分析下面函数:
int  f( int n )
      {   if( n = = 0 ) return 0;
          if( (n & 1) = = 0 ) return f(n/2);
          return f(n/2) + 1;
      }
调用函数f(10)的返回值是:
(a) 1
  (b) 3 (c) 5 (d) 2

7. 假如n,m>=0,那么下面函数的功能是:
 int  ff( int n, int m )
      {   if( n == 0 ) return m;
          return  ff( n-1, m*n );
      }
(a) 
计算m * (n!) (b) 计算最大公约数; (c)计算最小公倍数; (d) 计算(m + n)!

8. 给定长度为10的数组,归并排序由于对站所需的额外空间是
 (a) n+1
   (b)n   (c)log n  (d)n2 
9. 
总的来说,哈希方法(hashing,也称散列方法)的主要问题在于:
(a)
哈希函数难以计算; (b)哈希表的存取速度慢;
(c)
会发生冲突;   (d)哈希表占很多内存;
10. 
对于一个大小为m含有n项的哈希表,它的负载(load)因子是:
(a) m - n
  (b) n + m  (c) m/n  (d) n/m  
11. 
编译或执行下面C语言条件语句的结果是:
 if( x = expr ) ;
(a)expr
的值赋给x,然后计算x的值作为if的条件
(b)
当且仅当expr的值为true(),其值付给x;
(c)
会出现编译错误;
(d)
计算expr,然后与x的值相比较;
12. 
下面对p的声明,那一个是指向整数的指针:
(a) int **p
   (b) int p[]   (c) int &p   (d) int *p
13. 
假设Thing是一个用户定义的类,BThing的一个实例,对于下面的代码段
 Thing  A = B
用到了类Thing中的哪一个成分:
(a)
赋值操作符; (b)析构函数; (c)构造函数; (d)复制构造函数;
14. 
下面对类的部分描述用于说明一种用户定义的实数实现:
 class  RealNumber {    ...
             RealNumber( float x );
             RealNumber( float x, float y=0 );
      };
这段代码可能错在哪里?
(a)
在构造函数中不允许时有缺省值; (b)没有错误;
(c)
第二个构造函数与第一个不一致; (d)用两个实数参数无法创建一个实数;
15. 
面向对象的程序设计最适合下面哪一种开发要求:
(a)
程序是一个完整的程序模块;  (b)提供完善的代码复用;
(c)
获得高效率;      (d)对封装的需求;
16. 
下面哪一条关于继承的叙述是正确的:
(a)
它是一种重要的面向对象程序设计思想,但是在程序语言中无法实现;
(b)
它提供了由现有类构造新类的完善方法;
(c)
提供数据成员保护,阻止非法存取;
(d)
使得一种类型表现出多种类型的行为;
17. 
在面向对象方法中,多态机制的目的是:
(a)
在现有的多个类的上层创建一个新类;(b)在运行时动态地确定一个对象的类型;
(c)
保护数据成员,阻止非法存取;  (d)根据类的数据成员确定类的方法;
18. 
对于有n个节点e条边的图,如果用邻接表表示,则计算全部入度的时间复杂度是:
 (a) O(n + e)
   (b) O(n^2)   (c) O(n^3)  (d) O(n * e) 
19. 
结定结点的关键字序列(F、B、J、G、E、A、I、D、C、H),对它按字母的字典顺序进行排列,  快速排序的第一趟结果是:
(a)
CBDAFEIJGH  (b)CBDAEFIGJH
   (c)
BADEFGIJHC  (d)BCDAEFIJGH
20. 
在高级程序设计语言中,参数传递方法有传值调用(CALL BY value)、引用调用(CALL BY REFERENCE)、传名调用(CALL BY NAME)和宏扩展(MACRO EXPANSION),其中,引用调用是指把实在参数的___传递给相应的形式参数:
(a)
地址; (b)值;  (c)地址和值;  (d)名;   
21. 
W为一个二维数组,其每个数据元素Wij 占用6个字节,行下标i08,列下标j25,则二维数组W的数据元素共占用___个字节。
(a)480
     (b)192    (c)216    (d)144
22. 
堆是一种特殊的数据结构,下面哪一个是堆:
 (a)19,75,34,26,97,56
(b)97,26,34,75,19,56(c)19,56,26,97,34,75(d)19,34,26,97,56,75
23. 
下面关于B树和B+树的叙述中,不正确的是
 (a) B
树和B+树都是平衡的多分树; bB树和B+树都是可用于文件的索引结构;
 (c) B
树和B+树都能有效地支持顺序检索;(d) B树和B+树都能有效地支持随机检索;
24. 
在数据结构中,从逻辑上可以把数据结构分成:
(a)
动态结构和静态结构;  (b)紧凑结构和非紧凑结构;
(c)
线性结构和非线性结构; (d)内部结构和外部结构;
25. 
下面程序段的时间复杂度是
for (i=0;i<n;i++)
 for (j=0;j<m;j++)
  A[i][j]=0;
(a)O(m+n)
 (b)O(m/2+n/2) (c)O(m/n) (d)O(m*n)
26. 
若已知一个栈的入栈序列是123,…,n,其输出序列为p1p2p3,…,pn, 那么p1=npi为:
(a)i
  (b)n=i  (c)n-i+1 (d)不确定;

27. 判断一个循环队列QU(最多元素m0)为空的条件是:
(a)QU->front = = QU->rear
   (b) QU->front! = QU->rear
(c) QU->front = = (QU->rear+1)%m0
 (d) QU->front ! = (QU->rear+1)%m0
28. 
表达式a*(b+c)-d的后缀表达式是
(a)abcd*+-
  (b)abc+*d-  (c)abc*+d-  (d)*-a+bc
29. 
在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在qp之间插入s结点,则执行:
(a)s->next = p->next; p->next = s
(b)p ->next = s->next; s->next = p
(c) q->next =s; s->next = p
   (d) p->next =s; s->next = q
30. 
在一个链队中,假设fr分别为队首和队尾指针,则插入s所指结点的运算是:
(a) f->next = s
f=s(b) f->next = sr=s(c) s->next = rr=s(d) s->next = ff=s
31. 
将一个整数10002存到磁盘上,以ASCII码形式存储和以二进制形式存储,占用的字节数分别是
    (a)2
2                  (b)25
(c)5
2                    (d)55
32. 
计算机算法是指
(a) 
数值计算方法       (b) 对抽象数据结构的操作方法
(c) 
非数值计算方法      (d) 解决问题的有限运算序列
33. 
将递归算法转换成对应的非递归算法时,通常需要使用
    (a) 
                 (b) 对列
(c) 
链表                   (d) 
34. 
树最适合用来表示
    (a) 
有序数据元素             (b) 无序数据元素
(c) 
元素之间具有分支层次关系的数据  (d) 元素之间相关联的数据
35. 
分析执行下面程序段后,变量a的值:
 0
 0
 100
WHILE i <= j DO
  BEGIN
 a + i + j
 i + 1
 j - 1
END
(a) 5100         (b) 5000
(c) 4900         (d) 5101
36. 
要求一个线性表既能较快地查找,又能适应动态变化的要求,则可采用的查找方法是:
(a) 
分块查找        (b) 顺序查找
(c) 
二分查找        (d) 散列查找
37. 
下面哪种技术和分布式的软件体系结构无关
(a) CORBA
规范       (b) 中间件
(c) 
客户/服务器结构      (d) 主程序/子程序结构
38. 
下面哪种说法是不合理的
(a) 
程序 = 算法 + 数据结构    (b) 软件 = 程序 + 文档
(c) 
对象 = 继承 + 封装     (d) 构件 = 接口 + 实现
39. 
被认为最有可能彻底解决“软件危机”的方法是:
(a) 
软件复用      (b) 对数据结构的标准化
(c) 
面向对象技术     (d) 原型开发模型
40. UML
是指
(a) 
一种程序设计语言    (b) 一种通用的建模语言
(c) 
一种开发工具     (d) 一家著名的软件公司
二、 在联欢会上,M个人围坐一圈,每人准备了一个节目。表演的顺序采用一种游戏的方法产生:从圈内选出1人记为1号,按顺时针方向每人的号数依次记为2号、3号…M号。由1号随机抽出一个号N1<=N<=M),然后从1号开始顺时针方向123…顺序报数,每报到N时,这个人就出来表演节目,表演结束后,再从1开始继续向下报数,报到N的人就出来表演。凡是表演过的人,下一次报数时就跳过去,这样继续下去,直到M个人都表演完节目。请你编一个程序,用算法模拟这个过程,要求打印出表演节目人的顺序号。(15分)
三、 有甲、乙、丙三个人和ABC三个不同的工作,每人一天只能干一个工作,且一个工作每天必须一个人干。下表表示的是甲、乙、丙三个人在ABC三个不同的工作岗位上工作一天所创造的价值:
  A B C
 30 50 25
 35 30 20
 45 40 30
   说明:甲在A岗位上干一天所创造的价值为30,在B岗位上干一天所创造的价值为50
   请编程确定如何分配工作(甲、乙、丙三人在什么工作岗位),三人一天共同创造的价值最多。(15分)
四、 键盘输入一个高精度的正整数NN不超过200位),去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的NS,寻找一种方案使得剩下的数字组成的新数字最小。(20分)
五、 G=(V, E)是一无向连通图。如果去掉G的某顶点后,G就不是连通图,这样的顶点称为割点,试用深度优先搜索,编程确定一个无向连通图的所有割点。(20分)

         
原创粉丝点击