C. 只允许在端点处插入和删除元素 D. 没有共同点 (52) [答案]C
[考点]数据结构与算法
[评析]
栈是先进后出的,队列是先进先出的,共同点是只允许在端点处插入和删除元素。栈都是在一端进与出,而队列是在一端进在另一端出。
(53) 已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______。 A. cedba B. acbed C. decab D. deabc (53) [答案]A
[考点]数据结构与算法 [评析]
后序又叫后根,一次递归过程是先左再右最后根;中序是先左再根最后右。 比如下图:
前序是:abc 中序是:bac 后序是:bca
题中据后序遍历序列,一眼得知c结点是根,那么据中序deba结点都在一边,或都在根结点左边,或右边;据中序遍历序列得知全在根结点的左边。
接下来据后序得出e结点是紧挨着c结点的左子女,再据中序得知d是e的左子女,ba是右子树。
再据后序得b是e的右子女,再据中序得a是b的右子女。 分析结果得二叉树图示如下:
因为我茂叶数据结构是自学的,分析此类型的题我都是用自己的方法(递归分析的方法),要边分析边画图,一步一步连结起来,最后再根据题中的遍历检查图是否画对,如果都符合题目,最后再可根据图来得所求的遍历。
再次声明,此所有二级公基题全是我一人的思路写的,如果你觉得不可靠,可以看其它的书。
(54) 在下列几种排序方法中,要求内存量最大的是______。 A. 插入排序 B. 选择排序 C. 快速排序 D. 归并排序 (54) [答案]D
[考点]数据结构与算法
[分析]
我们对比一个排序方法的优越性有\平均时间\、\最坏情况时间\和\辅助空间\。其中辅助空间一般是排序中需要额外的内存开销,这些内存开销一般据一些如中间变量(暂存变量)、比较与交换等等来决定。
插入排序和选择排序的辅助空间都是o(1),快速排序是o(nlog2n),归并排序是o(n)。 可知归并排序要求内存量最大,我们也可以从其变量及循环个数也以看出归并排序要求内存量最大。
(55) 在设计程序时,应采纳的原则之一是______。 A. 程序结构应有助于读者理解 B. 不限制goto语句的使用 C. 减少或取消注解行 D. 程序越短越好 (55)
[答案]A
[考点]程序设计基础
[评析]
前面的题中已解释过,二级的各种程序设计语言教程都会对结构化程序设有一定的介绍,比如goto语句的限制使用,基本上每本书上都会提到。
其中A,即易读性比程序的效率更显得重要,这是结构化程序设计原则提倡的,也是我们进行开发时非常重要的一点。
(56) 下列不属于软件调试技术的是______。 A. 强行排错法 B. 集成测试法 C. 回溯法 D. 原因排除法 (56)
[答案]B
[考点]软件工程基础 [评析]
耍个小聪明:)
我们严格区分调试与测试,调试是已知有错误而来找错误,是被动的;测试有很多种,比如未发现错误但不能保证程序没错而来找BUG,还比如我们运行测试程序是否符合用户的要求,是主动的。不用说答案就是B了 :)
A、C、D都是具体的程序调试方法,而B是宏观的程序测试方法。
测试有单元测试、集成测试、确认测试、系统测试。比如我们在进行单元测试时,发现程序有错误,我们再可以根据A、C、D的方法来找错误。
题外话:
很多人学软件工程时认为软件工程太无聊了,似乎全部都是些背背记记的东西,但对于一个软件构架师,软件工程是非常重要的,这就不能是些背背的东西了,最重要的是理解,要彻底地理解,还得有些开发经验才行。《软件工程》这学科是从实践中得出来的,同样也需要赋予给实践中去,这样才有用!
(57) 下列叙述中,不属于软件需求规格说明书的作用的是______。 A. 便于用户、开发人员进行理解和交流
B. 反映出用户问题的结构,可以作为软件开发工作的基础和依据 C. 作为确认测试和验收的依据 D. 便于开发人员进行需求分析 (57) [答案]D
[考点]软件工程基础 [评析]
A、B、C都是作用,D说法有一定的错误,开发人员包括很多,比如程序员的工作就不是进行需求分析。
(58) 在数据流图(DFD)中,带有名字的箭头表示______。 A. 控制程序的执行顺序 B. 模块之间的调用关系 C. 数据的流向
D. 程序的组成成分 (58) [答案]C
[考点]软件工程基础 [评析]
顾名思义,数据流图就是带有方框(外部实体)、圆圈(变换/加工)和带有名字的箭头以表示数据的流向。需求分析中常用的分析图,它远离计算机上的具体实现,软件人员和用户都能看懂,有益于和用户交流。 (59) SQL语言又称为______。 A. 结构化定义语言 B. 结构化控制语言 C. 结构化查询语言 D. 结构化操纵语言 (59)
[答案]C
[考点]数据库设计基础 [评析]
学VF和ACCESS的朋友轻而易举选出答案,考其它的朋友们若没学数据库技术这一章节,则要记一下了。
Structured Query Language 结构化 查询 语言(语句)
(60) 视图设计一般有3种设计次序,下列不属于视图设计的是______。 A. 自顶向下 B. 由外向内 C. 由内向外 D. 自底向上 (60) [答案]B
[考点]数据库设计基础 [评析]
通常有如下几种方法:
1、自顶向下。先全局框架,然后逐步细化
2、自底向上。先局部概念结构,再集成为全局结构 3、由里向外。先核心结构,再向外扩张
4、混合策略。1与2相结合,先自顶向下设计一个概念结构的框架,再自底向上为框架设计局部概念结构
(61) 数据结构中,与所使用的计算机无关的是数据的______。 A. 存储结构 B. 物理结构 C. 逻辑结构 D. 物理和存储结构 (61) [答案]C
[考点]数据结构与算法 [评析]
通过前面的一些题的解释,相信此题对大家也很简单了。
逻辑结构更接近人的思想,比如栈的先进后出的结构,这是逻辑结构,如果研究到了栈在内存中的结构,如地址、地址里的内容等等,这就是物理结构了,我们一般无须过于深入底层地钻研。
(62) 栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是______。 A. ABCED B. DBCEA C. CDABE D. DCBEA (62)
[答案]D
[考点]数据结构与算法
[评析]
栈是先进后出的,因为在E放入前,A、B、C、D已经依次放进栈里了,故这四个元素出栈的顺序只能是D、C、B、A,E可是其中排序的任何位臵,答案只有D符合了。 (63) 线性表的顺序存储结构和线性表的链式存储结构分别是______。 A. 顺序存取的存储结构、顺序存取的存储结构 B. 随机存取的存储结构、顺序存取的存储结构 C. 随机存取的存储结构、随机存取的存储结构 D. 任意存取的存储结构、任意存取的存储结构 (63) [答案]B
[考点]数据结构与算法 [评析]
顺序存储结构可以以数组为例子,它在内存中的一片连续的储存空间,从第一个元素到最后一个元素,只要根据下标就可以访问。二级的各种程序设计语言都有。
链式存储结构可以以C/C++语言中的链表为例,各个链结点无须存放在一片连续的内存空间,而只需要指针变量指过来指过去,实现随机存取。 (64) 在单链表中,增加头结点的目的是______。
A. 方便运算的实现
B. 使单链表至少有一个结点 C. 标识表结点中首结点的位臵
D. 说明单链表是线性表的链式存储实现 (64)
[答案]A
[考点]数据结构与算法
[评析]
举个例子,假如我们写一个实现链表删除一个元素的函数(或过程),供共享用,函数的参数有2个,一个指针变量(指向链表的头结点),一个字符变量(待删除的元素)。通过链表头结点的指针传给函数的第一个指针变量参数,就可方便实现是哪一个链表的操作。 如果你考的科目没有指针,此题答案记一下就行了。
(65) 软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指______。 A. 模块间的关系
B. 系统结构部件转换成软件的过程描述 C. 软件层次结构 D. 软件开发过程 (65) [答案]B
[考点]软件工程基础 [评析]
相当于详细设计,比如N-S图就是一种,它不用具体的某种语言实现,但描述了程序的思路,有了这就可以很轻松转换为某种语言的程序源代码。这是一种系统结构部件转换成软件的过程描述。
(66) 为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为______。 A. PAD图 B. N-S图 C. 结构图 D. 数据流图 (66) [答案]B
[考点]软件工程基础 [评析]
二级科目的很多教程都在前N-S图的例子,比如C语言教程基本上都有,程序流程图大部分科目也有例子。这里再举个例子。 比如:
如果2等于3,则变量a=1,否则a=0。 我们用N-S图表示:
转换成VB: If 2=3 Then a=1 else