2022年软考-软件设计师考前模拟强化练习题61(附答案详解)

上传人:大米 文档编号:493263453 上传时间:2023-06-25 格式:DOCX 页数:25 大小:1.35MB
返回 下载 相关 举报
2022年软考-软件设计师考前模拟强化练习题61(附答案详解)_第1页
第1页 / 共25页
2022年软考-软件设计师考前模拟强化练习题61(附答案详解)_第2页
第2页 / 共25页
2022年软考-软件设计师考前模拟强化练习题61(附答案详解)_第3页
第3页 / 共25页
2022年软考-软件设计师考前模拟强化练习题61(附答案详解)_第4页
第4页 / 共25页
2022年软考-软件设计师考前模拟强化练习题61(附答案详解)_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《2022年软考-软件设计师考前模拟强化练习题61(附答案详解)》由会员分享,可在线阅读,更多相关《2022年软考-软件设计师考前模拟强化练习题61(附答案详解)(25页珍藏版)》请在金锄头文库上搜索。

1、2022年软考-软件设计师考前模拟强化练习题(附答案详解)1. 案例题阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】层叠菜单是窗口风格的软件系统中经常采用的一种系统功能组织方式。层叠菜单(如图6-1示例)中包含的可能是一个菜单项(直接对应某个功能),也可能是一个子菜单,现在采用组合(composite)设计模式实现层叠菜单,得到如图6-2所示的类图层叠菜单(如图6-1示例)暂缺 图6-2 类图import java.util.*;abstract class MenuComponent / 构成层叠菜单的元素(1) String name; / 菜单项或子菜单

2、名称public viod printName() System.out.println(name); public (2) ;public abstract boolean removeMenuElement(MenuComponent element);public (3) ;class MenuItem extends MenuComponent public MenuItem(String name) this.name=name; public boolean addMenuElement(MemuComponent element) return false; public boo

3、lean removeMenuElement(MenuComponent element) return false; public List getElement() return null; class Menu extends MemuComponent private (4);public Menu(String name)this.name = name;this.elementList = new ArrayList;public boolean addMenuElement(MenuComponent element)return elementList.add(element)

4、;public boolean removeMenuElement(MenuComponent element)return elementList.remove(element);public List getElement() return elementList;class CompositeTest public static void main(String args) MenuComponent mainMenu = new Menu(“AB”); /此处字符不清晰,以“AB”代替原文MenuComponent subMenu = new Menu(“Chart”);MenuCom

5、ponent element = new MenuItem(“On This Sheet”);(5);subMenu.addMenuElement(element);printMenus(mainMenu);private static void printMenus(MenuComponent ifile)ifile.printName();List children = ifile.getElement();if(children = null) return; /打印for(MenuComponent element; children)printMenus(element);【答案】(

6、1)protected(2)abstract boolean addMenuElement(MemuComponent element)(3)abstract List getElement()(4)ArrayList elementList(5)mainMenu.addMenuElement(subMenu)【解析】本题是典型的组合模式应用。首先根据类图中name标注的为#(+表示public,-表示private,#表示protected),第(1)空对name的修饰应该是protected。然后根据抽象类和实现类的对应关系,可以补充第(2)(3)空,这两处缺失的方法根据下文代码进行补充,

7、注意方法名必须用abstract修饰,并且注意抽象方法的写法没有具体方法体。其中第(2)空填写abstract boolean addMenuElement(MemuComponent element) ,第(3)空填写abstract List getElement()。第(4)空缺失了一个属性,此时根据下文的同名构造函数会发现,此处传参给了this.name以及this.elementList,name可以根据父类继承使用,而elementList需要定义,因此此处缺失的参数是elementList,类型根据后面的赋值类型进行定义,即第(4)空填写ArrayList elementList

8、。第(5)空是对组合模式的应用拼装,根据下文可知打印需要调用mainMenu对象,而此时该对象是独立的,需要与其他菜单进行拼装,下文中subMenu拼装了element,此处需要将subMenu拼装到mainMenu,即第(5)空填写mainMenu.addMenuElement(subMenu)。2. 单选题某简单无向连通图G的顶点数为n,则图G最少和最多分别有( )条边。问题1选项A.n,n2/2B.n-1,n*(n-1)/2C.n,n*(n-1)/2D.n-1,n2/2【答案】B【解析】本题考查图的基本概念。本题可以用实例法进行分析,简单画出一个无相连通图,比如两个顶点相连接,此时结点n

9、=2,边最少为1,最多也为1,满足要求的只有B选项。3. 单选题进程P1、 P2、P3、P4、P5和P6的前趋图如下所示。用PV操作控制这6个进程之间同步与互斥的程序如下,程序中的空和空处应分别为( ) ,空和空处应分别为( ) , 空和空处应公别为( )问题1选项A.V(S1)和P(S2)P(S3)B.V(S1)和V(S2)V(S3)C.P(S1)和P(S2)V(S3)D.P(S1)和V(S2)V(S3)问题2选项A.V(S3)和P(S3)B.V(S4)和P(S3)C.P(S3)和P(S4)D.V(S4)和P(S4)问题3选项A.V(S6)和P(S5)B.V(S5)和P(S6)C.P(S5)

10、和V(S6)D.P(S5)和V(S5)【答案】第1题:D第2题:B第3题:A【解析】本题考查P,V操作前驱图相关问题。对于这种问题,根据箭头的指向判断相应的PV操作,先理清楚前趋图中的逻辑关系:P1没有前驱,P2的前驱是P1,P3的前驱是P2,P4的前驱是P2,P5的前驱是P3,P6的前驱是P4,P5。前驱就是指只有在前驱进程完成后,该进程才能开始执行。由图可知,这里进程之间有6条有向弧,分别表示为P1P2,P2P3,P2P4,P3P5,P4P6,P5P6,各个进程间的逻辑关系,那么我们需要设定6个信号量(S1、S2、S3、S4、S5、S6),利用PV操作来控制这些过程。对于进程P1,完成之后

11、,需要通知P2,所以在P1执行了之后,实现了V(S1)操作。对于进程P2,开始之前需要申请资源S1,实现P(S1),P2执行完成之后,需要通知P3和P4,实现两个V操作,分别是V(S2)和V(S3)对于进程P3,开始之前需要申请资源S2,实现P(S2),P3执行完成之后,需要通知P5,实现V操作,为V(S4)对于进程P4,开始之前需要申请资源S3,实现P(S3),P4执行完成之后,需要通知P6,实现V操作,为V(S5)对于进程P5,开始之前需要申请资源S4,实现P(S4),P5执行完成之后,需要通知P6,实现V操作,为V(S6)对于进程P6,开始之前需要申请资源S5和S6,实现两个P操作,分别

12、为P(S5)和P(S6)4. 单选题用C/C+语言为某个应用编写的程序,经过( )后形成可执行程序。问题1选项A.预处理、编译、汇编、链接B.编译、预处理、汇编、链接C.汇编、预处理、链接、编译D.链接、预处理、编译、汇编【答案】A【解析】本题考查汇编语言的执行过程。对于编译型语言,处理过程为:预处理-编译-汇编-链接。故正确答案选择A选项。5. 单选题在求解某问题时,经过分析发现该问题具有最优子结构和重叠子问题性质。则适用( )算法设计策略得到最优解。若了解问题的解空间,并以广度优先的方式搜索解空间,则采用的是( )算法策略。问题1选项A.分治B.贪心C.动态规则D.回溯问题2选项A.动态规

13、则B.贪心C.回溯D.分支限界【答案】第1题:C第2题:D【解析】要想直接解决一个较大的问题,有时是相当困难的,分治法的设计思想是将一个难以解决的大问题分解成一些规模较小的相同问题,以便各个击破,分而治之。动态规划法与分治法类似,其基本思想也是将带求解问题分解为若干个子问题,先求解子问题再从这些子问题的解得到原问题的解。与分治法不同的是,适合用动态规划法求解的问题,经分解得到的子问题往往不是独立的。若用分治法来解这类问题,则相同的子问题会被求解多次,以至于最后解决原问题需要耗费指数级时间。此时用一个中间表记录重复子问题的解,可以避免大量的重复计算。这就是动态规划法的基本思路。动态规划法的应用场

14、景一般会出现“最优子结构”的描述,并且针对重复子问题的计算通过记录-查表,可以提高效率。本题第一空描述的是C选项动态规划法。贪心法也经常用于解决最优化问题,与之不同的是,贪心法在解决问题的策略上是仅根据当前已有的信息做出选择,而且一旦做出选择,无论未来如何都不会改变。也就是只考虑当前最优,不考虑全局最优。一般不涉及划分和求解重复子问题。回溯法可以系统地搜索一个问题的所有解或任意解。它在包含问题的解空间树中,按照深度优先的策略的策略,从根结点出发搜索解空间树。分支限界法类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法,但在一般情况下,分支限界法与回溯法的求解目标不同。分支限界法的求解目标是找出满足约束条件的一个解即可。由于求解目标不同,其探索方式与回溯法也不同,分支限界法以广度优先或以最小耗费优先的方式搜索解空间树。本题第二空描述的是D选项分支限界法。6. 单选题以编译方式翻译C/C+源程序的过程中,类型检查在( )阶段处理问题1选项A.词法分析B.语义分析C.语法分析D.目标代码生成【答案】B【解析】词法分析阶段处理的错误:非法字符、单词拼写错误等。语法分析阶段处理的错误:标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号