2017年下半年程序员考试真题+答案解析(上午选择+下午案例完整版)全国计算机软考 下载本文

内容发布更新时间 : 2024/11/15 4:36:37星期一 下面是文章的全部内容请认真阅读。

若R[mid].key

(3)下一次查找是针对新的查找区间进行,重复步骤(1)和(2)。

(4)在查找过程中,low逐步增加,而high逐步减少。如果high

39、对关键码序列(12,24,15,56,20,87,69,9)采用散列法进行存储和查找,并设散列函数为H(Key)=Key(%表示整除取余运算)。采用线性探查法(顺序地探查可用存储单元)解决冲突所构造的散列表为( )。 A.

B.

C.

D.

答案: B

散列函数为H(Key)=KeyMOD11(MOD表示整除取余运算),因此只需要对线性表类数据分别与7进行取余运算。

12,24,15,56,20,87,69,9与11取余分别得到:1,2,4,1,9,10,3,9,按照序列依次存储到相应位置,若出现冲突则往后顺延 40、对下图所示的二叉树进行中序遍历(左子树,根结点,右子树)的结果是( )。

A. 5 2 3 4 6 1 B. 2 5 3 4 1 6 C. 2 4 6 5 3 1 D. 2 5 4 3 6 1 答案: D

前序遍历:先遍历根结点,然后遍历左子树,最后遍历右子树。 中序遍历:先遍历左子树,然后遍历根结点,最后遍历右子树。 后序遍历:先遍历左子树,然后遍历右子树,最后遍历根节点。 层序遍历:从上往下逐层遍历

41、对于下面的有向图,其邻接矩阵是一个(41)的矩阵, 采用邻接链表存储时,顶点0的表结点个数为 2,顶点3的表结点个数为0,顶点1的表结点个数为(42)。

A. 3X4 B. 4X3 C. 6X6 D. 7X7 答案: D 42、A. 0 B. 1 C. 2 D. 3 答案: C 43、对n个关键码构成的序列采用直接插入排序法进行升序排序的过程是:在插入第i个关键码Ki时,其前面的i-1个关键码己排好序,因此令Ki与Ki-1、Ki-2、...,依次比较,最多到K1为止,找到插入位置并移动相关元素后将Ki插入有序子序

列的适当位置,完成本趟(即第i-1趟)排序。以下关于直接插入排序的叙述中,正确的是( )。

A. 若原关键码序列已经升序排序,则排序过程中关键码间的比较次数最少 B. 若原关键码序列已经降序排序,则排序过程中关键码间的比较次数最少 C. 第1趟完成后即可确定整个序列的最小关键码 D. 第1趟完成后即可确定整个序列的最大关键码 答案: A 44、采用面向对象程序设计语言C++/Java进行系统实现时,定义类S及其子类D。若类S中已经定义了一个虚方法int fun(int a,int b) ,则方法(44)不能同时在类S中。D中定义方法int fun(int a,int b) ,这一现象称为(45)。 A. int fun(int x,double y) B. int fun(double a,int b) C. double fun(int x,double y) D. int fun(int x,int y) 答案: A

在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是重复定义,但是在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。

重载是在同一类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可,而重置(覆盖)是子类重新定义父类中己经定义的方法,即子类重写父类方法。 45、采用面向对象程序设计语言C++/Java进行系统实现时,定义类S及其子类D。若类S中已经定义了一个虚方法int fun(int a,int b) ,则方法(44)不能同时在类S中。D中定义方法int fun(int a,int b) ,这一现象称为(45)。 A. 覆盖/重置 B. 封装

C. 重载/过载 D. 多态 答案: A

46UML中行为事物是模型中的动态部分,采用动词描述跨越时间和空间的行为。(46)属于行为事物,它描述了(47)。 A. 包 B. 状态机 C. 注释 D. 构件 答案: B

47、UML中行为事物是模型中的动态部分,采用动词描述跨越时间和空间的行为。(46)属于行为事物,它描述了(47)。

A. 在特定语境中共同完成一定任务的一组对象之间交换的消息组成 B. 计算机过程执行的步骤序列

C. 一个对象或一个交互在生命期内响应事件所经历的状态序列 D. 说明和标注模型的任何元素 答案: C

48、行为型设计模式描述类或对象如何交互和如何分配职责。以下( )模式是行为型设计模式。

A. 装饰器 (Decorator) B. 构建器 (Builder) C. 组合(Composite) D. 解释器(Interpreter) 答案: D

AC为结构型,B为创建型。在面向对象系统设计中,每一个设计模式都集中于一个特定的面向对象设计问题或设计要点,描述了什么时候使用它,在另一些设计约束条件下是否还能使用,以及使用的效果和如何取舍。按照设计模式的目的可以分为创建型模式、结构型模式和行为型模式3大类。创建型模式与对象的创建有关:结构型模式处理类或对象的组合,涉及如何组合类和对象以获得更大的结构:行为型模式对类或对象怎样交互和怎样分配职责进行描述。创建型模式包括Factory Method、Abstract Factory、Builder、Prototype和Singleton;结构型模式包括Adapter(类)、Adapter(对象)、Bridge、Composite、Decorator、Façade、Flyweight和Proxy;行为型模式包括Interpreter、Template Method、Chain of Responsibility、Command、Iterator、Mediator、Memento Observer State Strategy和Visitor

49、在结构化分析方法中,用于对功能建模的(49)描述数据在系统中流动和处理的过程,它只反映系统必须完成的逻辑功能;用于行为建模的模型是(50),它表达系统或对象的行为。 A. 数据流图 B. 实体联系图 C. 状态-迁移图 D. 用例图 答案: A

数据流图:用图形的方式从数据加工的角度来描述数据在系统中流动和处理的过程,只反 映系统必须完成的功能,是一种功能模型。

在结构化分析方法中用状态迁移图表达系统或对象的行为。

50、在结构化分析方法中,用于对功能建模的(49)描述数据在系统中流动和处理的过程,它只反映系统必须完成的逻辑功能;用于行为建模的模型是(50),它表达系统或对象的行为。 A. 数据流图 B. 实体联系图 C. 状态-迁移图 D. 用例图

答案: C

51、若采用白盒测试法对下面流程图所示算法进行测试,且要满足语句覆盖,则至少需要(51)个测试用例,若表示输入和输出的测试用例格式为(A,B,X;X),则满足语句覆盖的测试用例是(52)。

A. 1 B. 2 C. 3 D. 4 答案: A

52、 A. (1,3,3;8) B. (1,3,5;10) C. (5,2,15;8) D. (5,2,20;9) 答案: A

白盒测试方法:

(1)语句覆盖。被测程序的每个语句至少执行一次。是一种很弱的覆盖标准。 (2)判定覆盖。也称为分支覆盖,判定表达式至少获得一次真、假值。判定覆盖比语句覆盖强。

(3)条件覆盖。每个逻辑条件的各种可能的值都满足一次。 (4)路径覆盖。覆盖所有可能的路径。

(5)判定/条件覆盖。每个条件所以可能的值(真/假)至少出现一次。 (6)条件组合覆盖。每个条件的各种可能值的组合都至少出现一次。 此处只需要一个测试用例就可以完成所有的语句覆盖。

此题有误,无正确答案。按照要求,应该选择A=2.B=3,X取任意值。