软件工程实验三答案.docx
- 文档编号:27949032
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:15
- 大小:73.96KB
软件工程实验三答案.docx
《软件工程实验三答案.docx》由会员分享,可在线阅读,更多相关《软件工程实验三答案.docx(15页珍藏版)》请在冰豆网上搜索。
软件工程实验三答案
1.源文件
#include
#include
voidmain()
{
intA,B;
doubleX;
cout<<"请依次输入{[A,B,X],[X]}中的A,B,X:
"< cin>>A; cin>>B; cin>>X; if(A>1&&B==0) { X=X/A; } if(A==2||X>1) { X=X+1; } cout<<"X="< } 源代码运行结果: (1) #include #include voidmain() { intA,B; doubleX,x1; cout<<"请依次输入{[A,B,X],[X]}中的A,B,X,[x]: "< cin>>A; cin>>B; cin>>X; cin>>x1; if(A>1||B==0) { X=X/A; } if(A==2||X>1) { X=X+1; } cout<<"X="< } 测试用例{[2,0,3],[2.5]}运行结果: 该组数据满足&&(且)对||(或)的逻辑覆盖。 不能发现错误,and要求比or严格,所以and可以满足的数据or也肯定可以满足。 (2) #include #include voidmain() { intA,B; doubleX,x1; cout<<"请依次输入{[A,B,X],[X]}中的A,B,X,[x]: "< cin>>A; cin>>B; cin>>X; cin>>x1; if(A>1&&B==0) { X=X/A; } if(A==2||X<=1) { X=X+1; } cout<<"X="< } 测试用例{[2,0,3],[2.5]}的运行结果: 不能发现错误,第二个判定是or只要满足一个条件即可。 因为a=2所以第二个条件恒为真。 所以不能发现错误。 (3) #include #include voidmain() { intA,B; doubleX,x,x1; cout<<"请依次输入{[A,B,X],[X]}中的A,B,X,[x]: "< cin>>A; cin>>B; cin>>X; cin>>x1; x=X; if(A>1&&B==0) { X=X/A; } if(A==2||X>1) { X=X+1; } cout<<"X="< cout<<"其对应的{[A,B,X],[X]}为: "<<"{"<<"["< } 测试用例{[3,0,1],[1/3]}的运行结果: 测试用例{[2.1.2],[3]}的运行结果: 属于判定覆盖,第一组测试数据不能发现错误,因为第一组数据可以满足判定一的AND判断,肯定可以通过OR的判断条件。 第二组测试数据可以发现错误,因为A=2,B=1原本不见而已通过路径b,因为只有A满足了条件,B为满足条件,通过AND返回0,。 由于把and错写成or,返回1,影响了x的值,发现错误。 (4) #include #include voidmain() { intA,B; doubleX,x,x1; cout<<"请依次输入{[A,B,X],[X]}中的A,B,X,[x]: "< cin>>A; cin>>B; cin>>X; cin>>x1; x=X; if(A>1&&B==0) { X=X/A; } if(A==2||X<=1) { X=X+1; } cout<<"X="< cout<<"其对应的{[A,B,X],[X]}为: "<<"{"<<"["< } 测试用例{[3,0,1],[1/3]}的运行结果: 测试用例{[2.1.2],[3]}的运行结果: {[3,0,1],[1/3]}可以。 经过第1个判断,执行b操作是x=1/3,第2个判断是x<=1,返回1,进行e操作。 最后得到的x=4/3,与期望结果不同,提示错误。 {[2,1,2],[3]}不可以。 第1个判断是B==0不成功,将通过b进行第2个判定,此时x仍为2。 因为A==2正确,返回1,进行e操作。 最后x=3,与期望结果相同。 不能发现“x>1”错写成了“x<=1”。 (5) #include #include voidmain() { intA,B; doubleX,x,x1; cout<<"请依次输入{[A,B,X],[X]}中的A,B,X,[x]: "< cin>>A; cin>>B; cin>>X; cin>>x1; x=X; if(A>1&&B==0) { X=X/A; } if(A==2||X<=1) { X=X+1; } cout<<"X="< cout<<"其对应的{[A,B,X],[X]}为: "<<"{"<<"["< } 测试用例{[2,0,3],[2.5]}的运行结果: 测试用例{[1,1,1],[1]}的运行结果: 满足语句覆盖,判断覆盖,条件覆盖,判断/条件覆盖。 第一组测试数据不能发现错误,在第2个判定时,因为A==2正确,返回1,进行e操作。 最后x=2.5,与期望结果相同。 所以不能发现“x>1”错写成了“x<=1”。 第二组测试数据可以发现错误,因为A=1,x=1原本不可以通过第2个判定,返回0。 但写错后x<=1成立,返回1,影响了X的值,发现错误。 (6) #include #include voidmain() { intA,B; doubleX,x,x1; cout<<"请依次输入{[A,B,X],[X]}中的A,B,X,[x]: "< cin>>A; cin>>B; cin>>X; cin>>x1; x=X; if(A<=1&&B! =0) { X=X/A; } if(A==2||X>1) { X=X+1; } cout<<"X="< cout<<"其对应的{[A,B,X],[X]}为: "<<"{"<<"["< } 测试用例{[2.1.1],[2]}的运行结果: 测试用例{[1,0,2],[3]}的运行结果: 都不能。 {[2,1,1],[2]}原本执行路径是abe。 出错后执行路径仍为abe,所以不能发现错误。 {[1,0,2],[3]}原本执行路径是abe。 出错后执行路径仍为abe,所以也不能发现错误。 (7) #include #include voidmain() { intA,B; doubleX,x,x1; cout<<"请依次输入{[A,B,X],[X]}中的A,B,X,[x]: "< cin>>A; cin>>B; cin>>X; cin>>x1; x=X; if(A<=1&&B! =0) { X=X/A; } if(A==2||X>1) { X=X+1; } cout<<"X="< cout<<"其对应的{[A,B,X],[X]}为: "<<"{"<<"["< } 测试用例{[2,1,1],[2]}的运行结果: 测试用例{[2,0,2],[2]}的运行结果: 测试用例{[1,1,1],[1]}的运行结果: 测试用例{[1,0,2],[3]}的运行结果: 可以发现错误。 {[2,1,1],[2]}原本执行路径是abe。 出错后执行路径仍为abe,所以不能发现错误。 {[2,0,2],[2]}原本执行路径是ace。 出错后执行路径仍为abe,可以发现错误。 {[1,1,1],[1]}原本执行路径是abd。 出错后执行路径仍为acd,所以不能发现错误。 {[1,0,2],[3]}原本执行路径是abe。 出错后执行路径仍为abe,所以也不能发现错误。 2.源代码 #include #include voidmain() { inti,a; cout<<"请输入i和a的值: "< cin>>i>>a; while(i<=10) { a+=2; if(a>4) { a*=2; a+=3; } else { if(a>1) a-=4; else a+=5; } i++; } a*=4; cout<<"a="< } 源文件运行结果: 测试用例: {[11,1],[4]}、{[10,1],[-4]}、{[9,1],[16]}、{[5,1],[676]}、{[3,1],[2788]}、{[2,1],[5604]}、{[1,1],[11236]}、{[0,1],[22500]} 3.源文件 等价类划分方法: 输入条件的等价类划分 输入条件 有效等价类 无效等价类 A的类型
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 实验 答案