软件设计师考试科目包括综合知识与案例分析两门,为帮助广大软考中级软件设计师考生更好备考,信管网特整理汇总了软件设计师部分综合知识与案例分析的模拟试题、答案及解析供考生查阅,并提供免费在线模拟答题、历年真题免费下载等服务,了解软件设计师更多备考信息请关注信管网。
相关推荐:
免费练习:软件设计师考试题库(模拟试题、章节练习、每日一练)
一、综合知识
1、kerberos系统中可通过在报文中加入( )来防止重放攻击。
A、会话密钥
B、时间戳
C、用户ID
D、私有密钥
信管网参考答案:B
查看解析:www.cnitpm.com/st/41726981.html
2、 某项目的活动持续时间及其依赖关系如下表所示,则完成该项目的最少时间为( )天。
A、43
B、45
C、50
D、55
信管网参考答案:D
查看解析:www.cnitpm.com/st/4166819267.html
3、下面二叉树表示的简单算术表达式为( )。
A.10*20+30-40
B.10*(20+30-40)
C.10*(20+30)-40
D.10*20+(30-40)
信管网参考答案:C
查看解析:www.cnitpm.com/st/4071112926.html
4、同一消息可以调用多种不同类的对象的方法,这些类有某个相同的超类,这种现象是( )。
A.类型转换
B.映射
C.单态
D.多态
信管网参考答案:D
查看解析:www.cnitpm.com/st/3960928877.html
5、 两个递增序列 A 和 B 的长度分别为 m 和 n(m且 m 与 n 接近), 将二者归井为一个长度为 m+n 的递增序列。 当元素关系为( ) , 归并过程中元素的比较次数最少。
信管网参考答案:A
查看解析:www.cnitpm.com/st/395484793.html
二、案例分析
试题一、
阅读下列说明和C代码,回答问题1至问题3。
【说明】
0-1背包问题定义为:给定i个物品的价值v[1…i]、小重量w[1...i]和背包容量T,每个物品装到背包里或者不装到背包里。求最优的装包方案,使得所得到的价值最大。
0-1背包问题具有最优子结构性质。定义c[i][T]为最优装包方案所获得的最大价值,则可得到如下所示的递归式。
【c代码】
下面是算法的C语言实现。
(1)常量和变量说明
T: 背包容量
v[]:价值数组
w[]:重量数组
c[][]:c[i][j]表示前i个物品在背包容量为j的情况下最优装包方案所能获得的最大价值
(2) C程序
【问题1】 (8分)
根据说明和C代码,填充C代码中的空(1) ~ (4)。
【问题2】 (4分)
根据说明和C代码,算法采用了 (5) 设计策略。在求解过程中,采用了(6)
(自底向上或者自顶向下)的方式。
【问题3】 (3分)
若5项物品的价值数组和重量数组分别为v[]= {0,1,6,18,22,28}和w[]= {0,1,2,5,6,7}背包容量为T= 11,则获得的最大价值为 (7)。
查看答案及解析:www.cnitpm.com/st/4177310833.html
试题二、
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
模式匹配是指给定主串t和子串s,在主串t中寻找子串s的过程,其中s称为模式。如果匹配成功,返回s在t中的位置,否则返回-1 。
KMP算法用next数组对匹配过程进行了优化。KMP算法的伪代码描述如下:
1.在串t和串s中,分别设比较的起始下标i=j=0。
2.如果串t和串s都还有字符,则循环执行下列操作:
(1)如果j=-l或者t[i]=s[j],则将i和j分别加1,继续比较t和s的下一个字符;
(2)否则,将j向右滑动到next[j]的位置,即j =next[j]。
3.如果s中所有字符均已比较完毕,则返回匹配的起始位置(从1开始);否则返回-1。其中,next数组根据子串s求解。求解next数组的代码已由get_next函数给出。
【C代码】
(1)常量和变量说明
t,s:长度为悯铂Is的字符串
next:next数组,长度为Is
(2)C程序
#include
#include
#include
/*求next[]的值*/
void get_next( int *next, char *s, int Is) {
int i=0,j=-1;
next[0]=-1;/*初始化next[0]*/
while(i < ls){/*还有字符*/
if(j==-1l ls[i]==s[j]){/*匹配*/
j++;
i++;
if( s[i]==s[j])
next[i] = next[j];
else
Next[i] = j;
}
else
j = next[j];
}
}
int kmp( int *next, char *t ,char *s, int lt, int Is )
{
Int i= 0,j =0
while (i < lt && (1) ) {
if( j==-1 || (2) ) {
i ++
j ++
} else
(3)
}
if (j >= ls)
return (4) else
return -1;
}
【问题1】(8分)
根据题干说明,填充C代码中的空(1)~(4)。
【问题2】(2分)
根据题干说明和C代码,分析出kmp算法的时间复杂度为(5)(主串和子串的长度分别为It和Is,用O符号表示)。
【问题3】(5分)
根据C代码,字符串“BBABBCAC”的next数组元素值为(6)(直接写素值,之间用逗号隔开)。若主串为“AABBCBBABBCACCD”,子串为“BBABBCAC”,则函数Kmp的返回值是(7)。
温馨提示:因考试政策、内容不断变化与调整,信管网网站提供的以上信息仅供参考,如有异议,请以权威部门公布的内容为准!
信管网致力于为广大信管从业人员、爱好者、大学生提供专业、高质量的课程和服务,解决其考试证书、技能提升和就业的需求。
信管网软考课程由信管网依托10年专业软考教研倾力打造,官方教材参编作者和资深讲师坐镇,通过深研历年考试出题规律与考试大纲,深挖核心知识与高频考点,为学员考试保驾护航。面授、直播&录播,多种班型灵活学习,满足不同学员考证需求,降低课程学习难度,使学习效果事半功倍。
发表评论 查看完整评论 | |