首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 二级考试 >

2013年计算机二级公共基础知识备考试题三(附答案)(3)

2013-03-04 

  (11) 在下列选项中,哪个不是一个算法一般应该具有的基本特征______。

  A. 确定性

  B. 可行性

  C. 无穷性

  D. 拥有足够的情报

  [答案]C

  [考点]程序设计基础

  [评析]

  算法具有确定性、可行性,并拥有足够的情报。

  (12) 希尔排序法属于哪一种类型的排序法______。

  A. 交换类排序法

  B. 插入类排序法

  C. 选择类排序法

  D. 建堆排序法

  [答案]B

  [考点]数据结构与算法

  [评析]

  Shell排序法 输入:数组名称(也就是数组首地址)、数组中元素个数

  思想为:在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,

  并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为

  增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除

  多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现

  了这一思想。算法先将要排序的一组数按某个增量d分成若干组,每组中

  记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量

  对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成

  一组,排序完成。

  下面的函数是一个希尔排序算法的一个实现,初次取序列的一半为增量,

  以后每次减半,直到增量为1。以C语言为例。

  void shell_sort(int *x, int n)

  {

  int h, j, k, t;

  for (h=n/2; h>0; h=h/2) /*控制增量*/

  {

  for (j=h; j<n; p=""

  {

  t = *(x+j);

  for (k=j-h; (k>=0 && t<*(x+k)); k-=h)

  {

  *(x+k+h) = *(x+k);

  }

  *(x+k+h) = t;

  }

  }

  }

  故属于插入类排序法。

  (13) 下列关于队列的叙述中正确的是______。

  A. 在队列中只能插入数据

  B. 在队列中只能删除数据

  C. 队列是先进先出的线性表

  D. 队列是先进后出的线性表

  [答案]C

  [考点]数据构与算法

  [评析]

  队列是先进先出的,栈是先进后出的,2者的区别一定要搞清楚。

  (14) 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。

  A. N+1

  B. N

  C. (N+1)/2

  D. N/2

  [答案]B

  [考点]数据结构与算法

  [评析]

  很简单,我们的二级程序设计语言书中都有此算法,另外还要掌握二分法查找,这也是我们二级中常考的。

  那么二分法最坏的情况为多少次呢?

  >log2 n的最小整数值。

  比如n为1,最坏的情况要比较次;

  n为18,最坏的情况要比较5次。

  二分法适用于已排序的顺序表(我们二级语言中都是数组),考二级书里的,这里不再罗嗦。

  (15) 信息隐蔽的概念与下述哪一种概念直接相关______。

  A. 软件结构定义

  B. 模块独立性

  C. 模块类型划分

  D. 模拟耦合度

  [答案]B

  [考点]软件工程基础

  [评析]

  模块独立性越强,则信息隐蔽性越好。

  举个例,

  VB:

  在多重窗体设计时,每个窗体里的变量尽量与其它窗体里变量无关,比如少用Public声明的变量,即全局变量,当多个窗体共享全局变量越多时,窗体的独立性就越差。

  C:

  头文件里的一些函数,一般不用到全局变量,否则在主程序里出乱子的情况很多,我们在模块化开发时,尽量使每个模块独立,强功能内聚,分工明确,调试程序也要方便得多。

  C++:

  考此项的朋友估计不用我多讲,类的封装性就是一个很好的说明。

热点排行