绘图题:用SA方法画出下列问题的顶层和0层数据流图。某运动会管理系统接受来自运动员的报名单、裁判
0,24,32,17,31,30,46,47,40,63,49),构造哈希表,试回答下列问题:
①画出哈希表的示意图;
②若查找关键字63,需要依次与哪些关键字进行比较?
③若查找关键字60,需要依次与哪些关键字比较?
④假定每个关键字的查找概率相等,求查找成功时的平均查找长度。
阅读下列说明,回答问题1至问题3。
【说明】
以下代码由C语言书写,在输入3个整数后,能够输出最大数和最小数。
int main(void)
{
int a, b, c, max, min;
printf("input three numbers: ");
scanf("%d%d%d", &a, &b, &c);
if(a>b) /*判断1*/
{
max=a;
min=b;
}
else
{
max=b;
min=a;
}
if(max<c) /*判断2*/
max=c;
else if(min>c) /*判断3*/
min=c;
printf("max=%d\nmin=%d", max, min);
return 0;
}
请画出该程序段的控制流图,并分析该控制流图中有多少条线性独立路径(V(G)的值)。
为了用分支(判定)覆盖方法测试该程序,需要设计测试用例,使其能对该程序中的每个判断语句的各种分支情况全部进行过测试。
对两组输入数据(1)a=3,b=5,c=7;(2)a=4,b=6,c=5,请分别写出程序中各个判断语句的执行结果(以T表示真,以F表示假),填入答题纸的相应栏中。
上述两组测试数据是否能实现该程序的分支(判定)覆盖?如果能,请说明理由。如果不能,请再增设一组输入数据,使其能实现分支(判定)覆盖。
请帮忙给出每个问题的正确答案和分析,谢谢!
【问题一】 根据题干说明,填充C代码中的空(1)-(3) 【问题二】 根据题干说明和C代码,算法采用了()设计策略。 函数getCounterfeitCoin的时间复杂度为()(用O表示)。 【问题三】 若输入的硬币数为30,则最少的比较次数为(),最多的比较次数为()。
阅读下列说明,回答问题1至问题3,将解答填入的对应栏内。
[说明]
场景法是黑盒测试中重要的测试用例设计方法。目前多数软件系统都是用事件触发来控制业务流程,事件触发时的情景便形成了场景,场景的不同触发顺序构成用例。场景法通过场景描述业务流程(包括基本流(基本流程)和备选流(分支流程)),设计用例遍历软件系统功能,验证其正确性。
下面是对网上银行支付交易系统的基本流和备选流的描述:
基本流A:
备选流:
注:假定输入的银行卡号是正确的:不考虑备选流内循环情况。
使用场景法设计测试用例,指出所涉及到的基本流和备选流。基本流用字母A表示,备选流用题干中描述对应编号表示。
请针对问题1设计的测试用例,依次将银行卡号、初次输入密码、最终输入密码、卡内余额、银行卡可支付额度等信息填入下述测试用例表中。表中行代表各个测试甩例,列代表测试用例的输入值,用V表示有效数据元素,I表示无效数据元素,n/a表示不适用,例如C01表示“成功支付”用例。
测试用例表
在上述系统中,假设银行卡号只能输入0~9的数字,请参考下表,给出用边界值法检查卡号字符合法性的关键测试数据(字符或ASCⅡ值)。
请帮忙给出每个问题的正确答案和分析,谢谢!
阅读下列说明,回答问题1至问题3,将解答填入的对应栏内。
[说明]
场景法是黑盒测试中重要的测试用例设计方法。目前多数软件系统都是用事件触发来控制业务流程,事件触发时的情景便形成了场景,场景的不同触发顺序构成用例。场景法通过场景描述业务流程(包括基本流(基本流程)和备选流(分支流程)),设计用例遍历软件系统功能,验证其正确性。
下面是对网上银行支付交易系统的基本流和备选流的描述:
基本流A:
备选流:
注:假定输入的银行卡号是正确的:不考虑备选流内循环情况。
使用场景法设计测试用例,指出所涉及到的基本流和备选流。基本流用字母A表示,备选流用题干中描述对应编号表示。
请针对问题1设计的测试用例,依次将银行卡号、初次输入密码、最终输入密码、卡内余额、银行卡可支付额度等信息填入下述测试用例表中。表中行代表各个测试甩例,列代表测试用例的输入值,用V表示有效数据元素,I表示无效数据元素,n/a表示不适用,例如C01表示“成功支付”用例。
测试用例表
在上述系统中,假设银行卡号只能输入0~9的数字,请参考下表,给出用边界值法检查卡号字符合法性的关键测试数据(字符或ASCⅡ值)。
请帮忙给出每个问题的正确答案和分析,谢谢!
●试题一
阅读下列说明和数据流图,回答问题1~问题3。
【说明】
某考务处理系统主要功能是考生管理和成绩管理:
1.对考生送来的报名表进行检查。
2.对合格的报名表编好准考证号码后将准考证送给考生,将汇总后的考生名单送给阅卷站。
3.对阅卷站送来的成绩表进行检查,并根据考试中心指定的合格标准审定合格者。
4.填写考生通知单(内容包含该考生的准考证号、姓名、各课程成绩及最终合格/不合格标志),送给考生。
5.根据考生信息及考试成绩,按地区、年龄、文化程度和职业进行成绩分类统计及试题难度分析,产生统计分析表。
考务处理系统的顶层图如图1所示,第0层图如图2所示,加工2子图如图3所示。
【数据流图】
图1顶层图
图2 0层图
图3加工2子图
【问题1】
指出哪张图的哪些文件可以不必画出。
【问题2】
数据流图1-3中缺少3条数据流,请直接在图中添加。
【问题3】
根据系统功能和数据流图填充下列数据字典条目中的 (1) 和 (2) :
试题得分表=准考证号+{课程名+成绩}
考生名册=报名号+准考证号+姓名+通信地址+出生年份+文化程度+职业
考生通知单= (1)
报名表= (2)
阅读下列说明和数据流图,回答问题1至问题3,将解答填入对应栏内。
[说明]
某供销系统接受顾客的订货单,当库存中某配件的数量小于订购量或库存量低于一定数量时,向供应商发出采货单;当某配件的库存量大于或等于订购量时,或者收到供应商的送货单时并更新了库存后,向顾客发出提货单。该系统还可随时向总经理提供销售和库存情况表。
以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶层数据流图是正确的。图1-1是顶层数据流图,图1-2是第0层数据流图,图1-3是第1层数据流图,其中(A)是加工1的子图,(B)是加工2的子图。
[图1-1]
[图1-2]
[图1-3]
[数据字典]
(1)数据流条目
订货单=配件号+配件名+规格+数量+顾客名+地址
提货单=订货单+金额
采货单=配件号+配件名+规格+数量+供应商名+地址
送货单=配件号+配件名+规格+数量+金额
(2)文件说明
文件名:配件库存
组成:{配件号+配件名+规格+数量+允许的最低库存量}
根据题意,图1-2中哪个文件可不必画出。
阅读以下说明和流程图,回答问题1至问题3,将答案写在对应栏内。
【说明】
下面给出的是某高级公寓管理系统的一套分层数据流图。其功能描述如下所述。
(1)系统随时根据住户送来的入住单更新住户基本信息文件。
(2)每月初系统根据物业管理委员会提供的月附加费(清洁费、保安费等)表和房租调整表,计算每家住户的月租费(包括月附加费),向住户发出交费通知单。住户交费时,系统输入交费凭证,核对后输出数据给住户。
(3)系统定期向物业管理委员会提供住房分配表和交费情况表。
(4)住户因分户或换房,在更新账户基本信息文件的同时,系统应立即对这些住户做月租费计算,以了结分尸或换房前的房租。
假定题中提供的顶层图是正确的,请回答下列问题。
指出哪张图中的哪些文件可不必画出。
试题四(共15分)
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
模式匹配是指给定主串t和子串s,在主串t中寻找子串s的过程,其中s称为模式。
如果匹配成功,返回s在t中的位置,否则返回-1 。
KMP算法用next数组对匹配过程进行了优化。KMP算法的伪代码描述如下:
1.在串t和串s中,分别设比较的起始下标i=J=O
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 <stdio.h>
nclude <stdliB.h>
include <string.h>
/*求next【】的值*/
void get_next(int *next, char *s, int Is) {
int i=0,j=-1;
next[0]=-1;/*初始化next[0]*/
while(i< ils){/*还有字符*/
if(j=-1l ls[i]=s[j]){/*匹配*/
j++;
i++;
if(s[i]一s[jl)
next [i]- next[j];
else
Next[i]=j;
}
else
J= next[j];
}
}
int kmp(int *next, char *t ,char *s, int.lt, int Is )
{
inti= 0,j =0 ;
while (i<lt && (1 ) {
if(j=-1 II 2_) {
i++ ;
j ++ ;
} else
(3) :
}
if (j>= ls)
Retum (4)
else .
retum-1;
【问题1】(8分)
根据题干说明,填充C代码中的空(1)~(4).
【问题2】(2分)
根据题干说明和C代码,分析出kmp算法的时间复杂度为 (5)(主串和子的长度分别为It和Is,用O符号表示)。
【问题3】(5分)
根据C代码,字符串“BBABBCAC”的next数组元素值为 (6) (直接写素值,之间用逗号隔开)。若主串为“AABBCBBABBCACCD”,子串为“BBABBCAC则函数Kmp的返回值是 (7)