第 1 页:1-10试题及答案 |
第 2 页:10-20试题及答案 |
(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 {
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++:
考此项的朋友估计不用我多讲,类的封装性就是一个很好的说明。
(16) 面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______。
A. 模拟现实世界中不同事物之间的联系
B. 强调模拟现实世界中的算法而不强调概念
C. 使用现实世界的概念抽象地思考问题从而自然地解决问题
D. 鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考
[答案]C
[考点]软件工程基础
[评析]
我们举个例,
从各种语言的结构体类型出发,我们知道,结构体中可以定义很多变量,对每个变量执行相同的操作,挨个挨个写出,很麻烦。假设该结构体有如下变量:
草鱼、田鱼、鲫鱼……
它们都在一口池塘里,现在执行:它们都上来
传统的程序设计是:
草鱼上来
田鱼上来
鲫鱼上来
……
一条一条都写出,是不是很麻烦?
改进一下,我们用个循环:
n等于从1到10(假设共有10种鱼)
第n种鱼上来
还是很麻烦,现实中我们很易想到用"面向对象的思想",池塘里所有的鱼都是一个结构体变量,名为鱼,执行:
鱼上来
意思即所有的鱼都上来。
现特定于面象对象语言中的类,鱼,就可以看作为一类。
这就属于 C 项:
使用现实世界的概念抽象地思考问题从而自然地解决问题
这样罗嗦的解释望大家别晕,旨在帮助部分人的确难想通的,为应试,你能背下答案也行。
(17) 在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。
A. 详细设计
B. 需求分析
C. 总体设计
D. 编程调试
[答案]C
[考点]软件工程基础
[评析]
从先到后一排,是:
需求分析、总体设计、详细设计、编程调试
需求分析远离在计算机上的实现,谈不上功能的分解;
有了需求分析的报告,软件设计员可以思考我要让软件怎么做,开始总体设计,其间将软件的功能分解,确定模块之间的接口;
有了每个模块功能的分解,再对每个模块进入详细设计阶段;
接下来再是程序员的任务,编写代码,开始编程调试。
(18) 软件调试的目的是______。
A. 发现错误
B. 改正错误
C. 改善软件的性能
D. 挖掘软件的潜能
[答案]B
[考点]软件工程基础
[评析]
一个程序调试是为了干什么?
还不是为了改正错误?
发现错误?这只是一个过程,改正错误之前必须先发现错误,总不能目的就仅为发现错误吧。
(19) 按条件f对关系R进行选择,其关系代数表达式为______。
A. R|X|R
B. R|X|R
C. бf(R)
D. ∏f(R)
[答案]C
[考点]数据库设计基础
[评析]
C是选择一行,D是投影一列,二者要区分开。
如果不仅谈此题的话,有关关系代数,内容有些多,这里不是一两句能说清,可以看看相关《数据库》的资料中的关系代数,里面写得很详细。为应试,情急之下能记住几个题答案就行。
(20) 数据库概念设计的过程中,视图设计一般有三种设计次序,以下各项中不对的是______。
A. 自顶向下
B. 由底向上
C. 由内向外
D. 由整体到局部
[答案]D
[考点]数据库设计基础
[评析]
通常有如下几种方法:
1、自顶向下。先全局框架,然后逐步细化
2、自底向上。先局部概念结构,再集成为全局结构 、由里向外。先核心结构,再向外扩张
1、混合策略。1与2相结合,先自顶向下设计一个概念结构的框架,再自底向上为框架设计局部概念结构
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |