案例分析题

阅读下列C程序,回答下列问题,将解答填入答题纸的对应栏内。
【C程序】
int count(int x,int z){

int y=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

}

问答题

请针对上述C程序给出满足100%DC(判定覆盖)所需的逻辑条件。

【正确答案】

x>0;x<=0
x==1;x!=1
y==7或者y==21;y!=7且y!=21

【答案解析】

本题中的判定有x>0;x==1;y=7||y=21;三个判定点,所以要符合100%判定覆盖的要求,就需要使得每个判定结果的真假值都出现1次,即:x>0;x<=0;x==1;x!=1;y==7或者y==21;y!=7且y!=21。

问答题

请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。

【正确答案】

【答案解析】

控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:

问答题

请给出问题2中控制流图的线性无关路径。

【正确答案】

线性无关路径是指包括一组以前没有处理的语句或条件的一条路径。从控制流图来看,一条线性无关路径是至少包含有一条在其他线性无关路径中从未有过的边的路径:

【答案解析】