列表

详情


阅读下列C程序,回答问题1至问题3,将解答填入答题纸的对应栏内。
【C程序】
int count(int x,int z){
inty=0;
while(x>0){                  //l
if(x==1)                   //2
    y=7;                      //3
else{                         //4
    y=x+z+4;
    if(y==7||y==21)     //5,6
              x=1;               //7
}
x--;                        //8
}
return y;                    //9
}
【问题1】(3分)
请针对上述C程序给出满足100%DC(判定覆盖)所需的逻辑条件。
【问题2】(7分)
请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
【问题3】(5分)
请给出问题2中控制流图的线性无关路径。

参考答案: 【问题1】
x>0;x<=0
x==1;x!=1&&x>0
y==7或者y==21;y!=7&&y!=21&& x!=1&&x>0  
【问题2】

V(g)=5
【问题3】
1:1,9
2:1,2,3,8,1,9
3:1,2,4,5,7,8,1,9
4:1,2,4,5,6,7,8,1,9
5:1,2,4,5,6,8,1,9

详细解析:

【问题1】:本题中的判定有x>0;x==1;y=7||y=21;三个判定点,所以要符合100%判定覆盖的要求,就需要使得每个判定结果的真假值都出现1次,即:x>0;x<=0;x==1; x!=1&&x>0  ;y==7或者y==21;y!=7&&y!=21&& x!=1&&x>0    
【问题2】:控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:


控制流程图的环路复杂性 V(G)等于:
(1)控制流程图中的区域个数。
(2)边数-结点数+2。
(3)判定数+1。
V(g)=5
【问题3】:线性无关路径是指包括一组以前没有处理的语句或条件的一条路径。从控制流图来看,一条线性无关路径是至少包含有一条在其他线性无关路径中从未有过的边的路径:
1:1,9
2:1,2,3,8,1,9
3:1,2,4,5,7,8,1,9
4:1,2,4,5,6,7,8,1,9
5:1,2,4,5,6,8,1,9

上一题