全国计算机二级C语言 - 公共基础120题详解(6)

2019-05-26 20:01

思想为:在直接插入排序算法中,每次插入一个数,使有序序列只增加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

t = *(x+j);

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

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

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

故属于插入类排序法。

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

Page 26 of 51

A. 在队列中只能插入数据 B. 在队列中只能删除数据 C. 队列是先进先出的线性表 D. 队列是先进后出的线性表 (43) [答案]C

[考点]数据构与算法 [评析]

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

(44) 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。 A. N+1 B. N C. (N+1)/2 D. N/2 (44) [答案]B

[考点]数据结构与算法 [评析]

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

那么二分法最坏的情况为多少次呢? >log2 n的最小整数值。

比如n为4,最坏的情况要比较3次; n为18,最坏的情况要比较5次。

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

(45) 信息隐蔽的概念与下述哪一种概念直接相关______。 A. 软件结构定义

Page 27 of 51

B. 模块独立性 C. 模块类型划分 D. 模拟耦合度 (45) [答案]B

[考点]软件工程基础 [评析]

模块独立性越强,则信息隐蔽性越好。 举个例, VB:

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

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

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

(46) 面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______。

A. 模拟现实世界中不同事物之间的联系 B. 强调模拟现实世界中的算法而不强调概念

C. 使用现实世界的概念抽象地思考问题从而自然地解决问题 D. 鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考 (46) [答案]C

[考点]软件工程基础

Page 28 of 51

[评析] 我们举个例,

从各种语言的结构体类型出发,我们知道,结构体中可以定义很多变量,对每个变量执行相同的操作,挨个挨个写出,很麻烦。假设该结构体有如下变量: 草鱼、田鱼、鲫鱼……

它们都在一口池塘里,现在执行:它们都上来 传统的程序设计是: 草鱼上来 田鱼上来 鲫鱼上来 ……

一条一条都写出,是不是很麻烦? 改进一下,我们用个循环:

n等于从1到10(假设共有10种鱼) 第n种鱼上来

还是很麻烦,现实中我们很易想到用\面向对象的思想\,池塘里所有的鱼都是一个结构体变量,名为鱼,执行: 鱼上来

意思即所有的鱼都上来。

现特定于面象对象语言中的类,鱼,就可以看作为一类。 这就属于 C 项:

使用现实世界的概念抽象地思考问题从而自然地解决问题

这样罗嗦的解释望大家别晕,旨在帮助部分人的确难想通的,为应试,你能背下答案也行。

(47) 在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。 A. 详细设计 B. 需求分析 C. 总体设计

Page 29 of 51

D. 编程调试 (47) [答案]C

[考点]软件工程基础 [评析]

从先到后一排,是:

需求分析、总体设计、详细设计、编程调试

需求分析远离在计算机上的实现,谈不上功能的分解;

有了需求分析的报告,软件设计员可以思考我要让软件怎么做,开始总体设计,其间将软件的功能分解,确定模块之间的接口;

有了每个模块功能的分解,再对每个模块进入详细设计阶段; 接下来再是程序员的任务,编写代码,开始编程调试。 (48) 软件调试的目的是______。 A. 发现错误 B. 改正错误 C. 改善软件的性能 D. 挖掘软件的潜能 (48) [答案]B

[考点]软件工程基础 [评析] 倒!

一个程序调试是为了干什么? 还不是为了改正错误?

发现错误?这只是一个过程,改正错误之前必须先发现错误,总不能目的就仅为发现错误吧。

(49) 按条件f对关系R进行选择,其关系代数表达式为______。 A. R|X|R B. R|X|R f

Page 30 of 51


全国计算机二级C语言 - 公共基础120题详解(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:明末清初商人社会地位的变化

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: