问题
问答题
[说明] 计算下列源代码的McCabe环数,画出控制流程图并用罗马数字标出区域。 read x,y,z; type =“scalene”; if (x= =y or x = = z or y= = z)type =“isosceles ”; if (x = = y and x = = z) type =“equilateral”; if (x>= y+ z Or y>= x+20rz>=x+ y) type= “not a triangle”; if (x<=0 or y<= 0 or z <=0) type =“bad inputs”; print type;
答案
参考答案:
解析:试题四[解答要点] McCabe 的环数是软件开发中继代码行之后最常使用的度量。它基于图论的环数。 McCabe 试图度量程序的复杂性。前提是该复杂性与程序的控制流相关。图论使用公式C= e-n+1 来计算环数。McCabe 稍加修改后的公式为:C=e-n+2p其中: e=边的数目 n=结点的数目 p=强连通组建的数目(通常为1)控制流程图如下:
区域的数目为5,所以环数也为5。也可以用判断来数出环数。离开结点a、c、e、g的路径各有一个判断,因此,共有4个判断。环数为判断数加1,所以环数为5。也可以利用公式e-n+2来计算环数。这里,e=12,n=9,e-n+2=5