软考中级软件设计师历年经典真题及解析part8Word格式.docx
- 文档编号:18288270
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:14
- 大小:232.53KB
软考中级软件设计师历年经典真题及解析part8Word格式.docx
《软考中级软件设计师历年经典真题及解析part8Word格式.docx》由会员分享,可在线阅读,更多相关《软考中级软件设计师历年经典真题及解析part8Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
线性表采用链式存储结构时,访问表中的任意一个指定序号元素时,需要从起始位置,通过指针指向,直到到达指定位置,才能访问该元素,时间复杂度为O(n)。
而插入一个新元素时,找到任意位置的时间复杂度为O(n),而插入可以直接通过改变指针指向进行插入,时间复杂度为O
(1),因此任意位置插入新元素整个操作的时间复杂度为O(n)。
因此本题只有A选项是正确的。
第4题
将高级语言源程序翻译成机器语言程序的过程中,常引入中间代码。
以下关于中间代码的叙述中,不正确的是()。
A.中间代码不依赖于具体的机器
B.使用中间代码可提高编译程序的可移植性
C.中间代码可以用树或图表示
D.中间代码可以用栈和队列表示
本题考查程序语言基础知识。
从原理上讲,对源程序进行语义分析之后就可以直接生成目标代码,但由于源程序与目标代码的逻辑结构往往差别很大,特别是考虑到具体机器指令系统的特点,要使翻译一次到位很困难,而且用语法制导方式机械生成的目标代码往往是繁琐和低效的,因此有必要设计一种中间代码,将源程序首先翻译成中间代码表示形式,以利于进行与机器无关的优化处理。
由于中间代码实际上也起着编译器前端和后端分水岭的作用,所以使用中间代码也有助于提高编译程序的可移植性。
常用的中间代码有后缀式、三元式、四元式和树(图)等形式。
第5题
某企业管理信息系统中,采购子系统根据材料价格、数量等信息计算采购的金额,并给财务子系统传递采购金额、收款方和采购日期等信息,则这两个子系统之间的耦合类型为()耦合。
A.数据
B.标记
C.控制
D.外部
B。
非直接耦合:
两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。
数据耦合:
一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。
标记耦合:
一组模块通过参数表传递记录信息,就是标记耦合。
这个记录是某一数据结构的子结构,而不是简单变量。
其实传递的是这个数据结构的地址;
控制耦合:
如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
外部耦合:
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
公共耦合:
若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。
公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
内容耦合:
如果发生下列情形,两个模块之间就发生了内容耦合
(1)一个模块直接访问另一个模块的内部数据;
(2)一个模块不通过正常入口转到另一模块内部;
(3)两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
(4)一个模块有多个入口。
根据本题题干描述,采购子系统“给财务子系统传递采购金额、收款方和采购日期等信息”,传递时应将这些数据包装在数据结构中,因此二者之间是标记耦合。
第6题
结构化开发方法中,()主要包含对数据结构和算法的设计。
A.体系结构设计
B.数据设计
C.接口设计
D.过程设计
数据结构跟算法是系统的基础,是过程设计确定的任务。
体系结构设计:
定义软件系统各主要部件之间的关系。
数据设计:
基于E-R图确定软件涉及的文件系统的结构及数据库的表结构。
接口设计(人机界面设计):
软件内部,软件和操作系统间以及软件和人之间如何通信。
过程设计:
系统结构部件转换成软件的过程描述。
确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。
第7题
案例题
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【问题1】
(8分)
根据题干说明,填充C代码中的空
(1)-(4)
【问题2】(4分)
根据题干说明和C代码,算法采用的设计策略为(5)
算法的时间复杂度为(6),(用O表示)。
【问题3】(3分〉
给定字符序列ACCGGUAGU,根据上述算法求得最大字符对数为(7)
【问题1】
(1)max=C[i][j-1]
(2)t=i
(3)isMatch(B[t],B[j]),或isMatch(B[t],B[j])==1,或与其等价的形式
(4)C[1][n]
【问题2】
采用的算法策略:
动态规划法
时间复杂度:
O(n3)
【问题3】
最大字符对数:
2。
本题考查的是用动态规划法,以非递归方式实现。
根据题干,配对要求:
(1)满足四种组合之一;
(2)配对的2个字符间距至少有4个字符;
(3)若字符已配对,则其他配对不再考虑,也就是说1个字符不能配对2次,比如ACCCCUCCCCA,只有1组配对AU,U不能再与后面的A形成第2组配对;
(4)不交叉,2组配对字符位置能交叉,比如ACCCCCUUUUG,只有1组配对AU,CG与AU有交叉不能形成配对。
对于问题1代码填空,主要根据题干描述和代码上下文进行推导。
根据代码上下文可知,在整段代码中,缺少对变量max和t赋初值,这两个初值的赋值,应该填在空
(1)和空
(2)中,一般t作为循环变量,在for中进行赋值。
代码中有三层嵌套for循环。
其中第一层for循环,变量为k,取值范围从5到n-1,从题干描述,我们可以看到对于整个比较过程,要求字符对的位置相差大于4,因此此处的k值是字符对下标的差值;
第二层for循环,变量为i,取值范围从1到n-k,从题干描述,我们可以得出i是字符对较小的下标;
第三层for循环,变量为t,取值范围需要赋初值,并且t<
=j-4(此处有异议,与题干描述中的>
4有不符,但不影响本题解题过程),从题干描述和递归式可以看到,t是中间字符下标,用来划分子问题的,并且从递归式我们可以得出,t的最小值应该从i开始,因此空
(2)为t=i;
在第二层for循环内部,有j=i+k,根据代码和题干描述,可以得出j是字符对较大的下标,根据i和k的取值,可以看到j的取值范围为从6到n-1,对于空
(1)作为max的初始赋值,又根据递归式,可以看到max应该在C[i][j-1]和C[i][t-1]+1+C[t+1][j-1]之间取最大值,在代码中可以看到if会判断max与C[i][t-1]+1+C[t+1][j-1]之间的大小,因此,max之前的赋值应该为C[i][j-1],才能对二者进行比较,也就是说空
(1)应该为max=C[i][j-1];
空(3)在if判断中作为判断条件,根据递归式的条件和代码上下文,此处缺少字符匹配的判断,题干描述字符下标从1开始,因此,在比较过程中,实际比较的应该为B[t]和B[j]位置的字符,空(3)应该填写isMatch(B[t],B[j),或isMatch(B[t],B[j])==1,或与其等价的形式。
空(4)作为整个函数的返回值,因此空(4)应该为C[1][n]为最终结果。
本题采取的是动态规划的策略,代码为三层嵌套循环时间复杂度为k*i*t,由于k的取值范围是6~n-1,i的取值范围是1~n-5,t的取值范围是1~n-5,都是与n的取值相关,因此本题的时间复杂度为O(n3)。
【问题3】
对于本题最大字符匹配对数,根据题干描述或代码推导,可以看到,字符序列ACCGGUAGU的最大匹配情况为,(b1,b6),(b1,b9)或(b2,b8),(b3,b8),这两种情况的最大匹配对数都为2,因此本题答案(7)空为2。
第8题
若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:
-1.001,-1.0,1.0,1.001。
设计这组测试用例的方法是()
A.条件覆盖法
B.等价分类法
C.边界值分析法
D.错误推测法
C。
本题考查黑盒测试的边界值分析法。
在软件测试中,大量错误是发生在输入或输出范围的边界上的,而不是在输入范围的内部。
因此针对各种边界情况设计测试用例。
边界值分析时一种补充等价划分的测试用例设计技术,它不是选择等价类的任意元素,而是选择等价类边界的测试用例。
对给定的输入条件如果是规定的值的范围,则选取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
第9题
在进行面向对象设计时,采用设计模式能够()。
A.复用相似问题的相同解决方案
B.改善代码的平台可移植性
C.改善代码的可理解性
D.增强软件的易安装性
因为模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果,而且会得到解决问题的最佳办法。
采用设计模式能够复用相似问题的相同解决方案,加快设计的速度,提高了一致性。
第10题
在软件设计和编码过程中,采取“()”的做法将使软件更加容易理解和维护。
A.良好的程序结构,有无文档均可
B.使用标准或规定之外的语句
C.编写详细正确的文档,采用良好的程序结构
D.尽量减少程序中的注释
软件的易理解程度和可维护程度是衡量软件质量的重要指标,对于程序是否容易修改有重要影响。
为使得软件更加容易理解和维护,需要从多方面做出努力。
首先,要有详细且正确的软件文档,同时文档应始终与软件代码保持一致;
其次,编写的代码应该具有良好的编程风格,如采用较好的程序结构,增加必要的程序注释,尽量使用行业或项目规定的标准等。
第11题
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
用两台处理机A和B处理n个作业。
设A和B处理第i个作业的时间分别为ai和bi。
由于各个作业的特点和机器性能的关系,对某些作业,在A上处理时间长,而对某些作业在B上处理时间长。
一台处理机在某个时刻只能处理一个作业,而且作业处理是不可中断的,每个作业只能被处理一次。
现要找出一个最优调度方案,使得n个作业被这两台处理机处理完毕的时间(所有作业被处理的时间之和)最少。
算法步骤:
(1)确定候选解上界为最短的单台处理机处理所有作业的完成时间m,
(2)用p(x,y,k)=1表示前k个作业可以在A用时不超过x且在B用时不超过y时间内处理完成,则
p(x,y,k)=p(x-ak,y,k-1)||p(x,y-bk,k-1)(||表示逻辑或操作)。
(3)得到最短处理时问为min(max(x,y))。
【C代码】
下面是该算法的C语言实现。
(1)常量和变量说明
n:
作业数
m:
候选解上界
a:
数组,长度为n,记录n个作业在A上的处理时间,下标从0开始
b:
数组,长度为n,记录n个作业在B上的处理时间,下标从0开始
k:
循环变量
p:
三维数组,长度为(m+1)*(m+1)*(n+1)
temp:
临时变量
max:
最短处理时间
(2)C代码
#include
intn,m;
inta[60],b[60],p[100][100][60];
voidread(){/*输入n、a、b,求出m,代码略*/}
voidschedule(){/*求解过程*/
intx,y,k;
for(x=0;
x<
=m;
x++){
for(y=0;
y
(1)
for(k=1;
kp[x][y][k]=0;
}
k<
=n;
k++){
y<
y++){
if(x-a[k-1]>
=0)
(2);
if((3))p[x][y][k]=(p[x][y][k]||p[x][y-b[k-1]][k-1]);
voidwrite(){/*确定最优解并输出*/
intx,y,temp,max=m;
for(y=0;
=m;
if((4)){
temp=(5);
if(temp<
max)max=temp;
printf(“\n%d\n”,max),
voidmain(){read();
schedule();
write();
【问题1】(9分)
根据以上说明和C代码,填充C代码中的空
(1)~(5)。
(2分)
根据以上C代码,算法的时间复杂度为(6)(用O符号表示)。
(4分)
考虑6个作业的实例,各个作业在两台处理机上的处理时间如表4-1所示。
该实例的最优解为(7),最优解的值(即最短处理时间)为(8)。
最优解用(x1,x2,x3,x4,x5,x6)表示,其中若第i个作业在A上处理,则xi=1,否则xi=2。
如(1,1,1,1,2,2)表示作业1,2,3和4在A上处理,作业5和6在B上处理。
表4-1
(1)p[x][y][0]=1
(2)p[x][y][k]=p[x-a[k-1]][y][k-1]
(3)y-b[k-1]>
=0
(4)p[x][y][n]==1或p[x][y][n]或p[x][y][n]!
(5)(x>
=y)?
x:
y
(6)O(m2n)
(7)(1,1,2,2,1,1)
(8)15
。
下面我们来具体分析本试题。
第
(1)空所处的位置为schedule()函数的for循环中,从题目的描述和程序不难看出该三重循环的作用是给三维数组p赋初值,而根据题目描述可知数组k=0时,其对应的数组元素值都为1(因为这个时候没有作业,那么肯定可以在A用时不超过x且在B用时不超过y时间内处理完成),因此第1空应该填p[x][y][0]=1。
第
(2)空在函数schedule()中的第二个三重for循环中,而且是在if结构下,只有if条件的结果为真时,才执行第
(2)空的程序,从题目和程序也不难看出,这个三重for循环的作用就是要实现题目算法描述中的第
(2)步,即求出p数组中各元素的值。
那么当x-a[k-1]>
=0为真时,即说明前k个作业可以在A用时不超过x内处理完成,那么根据题目意思,应该p(x,y,k)=p(x-ak,y,k-1),因此第
(2)空的答案应该是p[x][y][k]=p[x-a[k-1]][y][k-1]。
第(3)空if判定的条件表达式,根据条件为真后面执行的语句可以判定出,这里的条件是要判定是否前k个作业可以在B用时不超过y内处理完成,因此第(3)空的答案是y-b[k-1]>
=0,其实本题与第
(2)空可以参照来完成。
第(4)空在函数write()中,是双重循环下if判定的条件,从题目注释来看,该函数是要确定最优解并输出的,那么结合该函数我们不难知识,确定最优解就是用这个双重循环来实现的,从前面的程序中,我们知道,所有的解的情况保存在数组p当中,那么现在就是要找出那个是最优解,其中max是用来存放当前最优解的,而临时变量temp要与max的值做一个比较,将较小的(当前最优)存放在max中,因此求最优解其实就是将所有解做一个比较,然后取出最优解。
综上所述,再结合程序和题干描述,“用p(x,y,k)=1表示在A用时不超过x且在B用时不超过y时间内处理完成”,我们不难知道第(4)空的答案是p[x][y][n]==1或者类似的表达式,p[x][y][n]==1表示当前情况下有一个解,那么这个解是x还是y呢?
这还需要接着判定x与y的值谁更小,将更小的赋值给临时变量temp,因此第5空答案为(x>
y。
本题主要考查时间复杂度,相对于第一问来说,要简单很多。
从给出的程序来看,最高的循环是三重循环,因此其时间复杂度为O(m2n)。
在本题给出的实例中,如果我们用题目描述的方式来求解,其过程也是相当复杂,因为在题目描述的情况下,数组p的长度为(33+1)*(33+1)*(6+1),由于我们不是计算机,要计算出该数组中各元素,肯定也不容易。
在这种情况下,因为题目给出的作业只有6个,因此可以采用观察法,不难发现,本题最优解的值为15,最优解为(1,1,2,2,1,1)或者(2,1,2,1,2,2)。
第12题
若某二叉树的后序遍历序列为KBFDCAE,中序遍历序列为BKEFACD,则该二叉树为()。
A.
B.
C.
D.
本题考查二叉树的遍历。
二叉树的主要遍历方式有:
前序遍历、中序遍历、后序遍历、层次遍历。
如果已知中序遍历,并知道前序遍历与后序遍历中的任意一个,便可得到一棵唯一的二叉树。
具体是怎么做的呢?
利用的是遍历的特点。
中序遍历的顺序是:
左、根、右。
而后序遍历的顺序是:
左、右、根。
回到题目里面来,从“后序遍历序列为KBFDCAE”,可以得知,二叉树的根结点为:
E(此时已经可以排除选项C与选项D了)。
继续分析,由“中序遍历序列为BKEFACD”,可以得知,二叉树的左子树包括结点:
BK。
右子树包括结点:
FACD。
重复上面的步骤,对左子树与左子树看成独立的两棵树进行分析。
在后序遍历中,左子树的结点BK的顺序为“KB”,所以B是根结点;
右子树的结点FACD的顺序为“FDCA”,所以右子树的根结点为A。
当分析到这一步时,已经可以得到本题答案为A。
第13题
某确定的有限自动机(DFA)的状态转换图如下图所示(A是初态,D、E是终态),则该DFA能识别()。
A.00110
B.10101
C.11100
D.11001
选项中,只有C选项的字符串能被DFA解析。
解析路径为:
ACEEBDD。
第14题
在发送电子邮件附加多媒体数据时需采用()协议来支持邮件传输。
A.MIME
B.SMIP
C.POP3
D.IMAP4
MIME它是一个互联网标准,扩展了电子邮件标准,使其能够支持多媒体数据。
第15题
某软件在应用初期运行在WindowsNT环境中。
现因某种原因,该软件需要在UNIX环境中运行,而且必须完成相同的功能。
为适应这个要求,软件本身需要进行修改,而所需修改的工作量取决于该软件的()。
A.可扩充性
B.可靠性
C.复用性
D.可移植性
软件的可扩充性指软件的体系结构、数据设计和过程设计的可扩充程度,可扩充性影响着软件的灵活性和可移植性。
软件可靠性指软件按照设计要求,在规定时间和条件下不出故障,可持续运行的程度,可靠性取决于软件的一致性、安全性、容错性和准确性等.软件复用性指软件或软件的部件能被再次用于其他应用中的程度,软件复用性取决于其模块独立性、通用性和数据共享性等。
软件可移植性指将软件系统从一个计算机系统或环境移植到另一种计算机系统或环境中运行时所需工作量的大小,可移植性取决于系统中硬件设备的特征、软件系统的特点和开发环境、系统分析与设计中关于通用性、软件独立性和可扩一充性等方面的考虑。
第16题
以下关于变量和常量和叙述中,错误的是()。
A.变量的取值在程序运行过程中可以改变,常量则不行
B.变量具有类型属性,常量则没有
C.变量具有对应的存储单元,常量则没有
D.可以对变量赋值,不能对常量赋值
本题主要考查我们对常量与变量的理解。
顾名思义,常量是指值一旦确定后就不能再变的量,而变量则是一个在程序执行过程中,可以根据需要修改的量,是一个可改变的量。
当然不管是常理还是变量,它们都有其类型属性。
第17题
“软件产品必须能够在3秒内对用户请求作出响应”属于软件需求中的()。
A.功能需求
B.非功能需求
C.设计约束
D.逻辑需求
软件需求中对软件产品的相应时间,吞吐量,价格等属性的要求都属于非功能性需求。
第18题
下列智力成果中,能取得专利权的是()。
A.计算机程序代码
B.游戏的规则和方法
C.计算机算法
D.用于控制测试过程的程序
专利法明确规定,智力活动的规则和方法不取得专利权。
智力活动规则和方法是直接作用于人的思维,与产业生产中的技术活动不发生直接关系,并不是对自然规律的利用,不属于技术方案。
通常,智力活动规则和方法是一些人为的规则,如管理规则、游戏规则、统计方法、分类方法和计算方法等。
算法被认为是一种数学公式,反映的是自然法则和逻辑思维过程,属于智力活动规则和方法,不能受到专利法的保护。
算法对于计算机软件而言极其重要,是计算机程序的基础,计算机软件总是离不开算法。
因此,计算机软件本身属于智力活动规则和方法的范畴,不能够授予专利权。
无论是源程序还是目标程序,它体现的是智力活动的规则和方法。
因此仅以单纯的计算机程序为主题的发明创造是不能获得专利权的。
随着计算机技术的发展,不能授予专利权的智力活动规则和方法与能够授予专利权的方法之间的界线比较模糊了。
例如,抽象出一种生产过程的数学模式,设计一种算法,通过予以运行用于控制该生产过程就能够获得专利保护。
也就是说,智力活动规
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中级 软件 设计师 历年 经典 解析 part8