续费的1%。 要求:
(1) 用判定表表示手续费的计算方法; (2) 用判定树表示手续费的计算方法。
(1)答:判定表如下图所示:
(2)判定树如下图所示:
6-8画出下列伪码程序的流图,计算它的环形复度。这个程序的逻辑有什么问题吗?
C EXAMPLE LOOP: DO WHILE Z> 0
A = B + 1 IF A > 10
THEN X = A ELSE Y = 2
END IF IF Y < 5
THEN PRINT X, Y ELSE IF Y = 2
THEN GOTO LOOP ELSE C = 3
END IF
END IF
G = H + R END DO IF F > 0
THEN PRINT G ELSE PRINT K
END IF STOP
答:(1)伪码的流程图如下所示:
根据程序流程图可得该程序流图:
环形复杂度V(G) =封闭的区域数=6 =E-n+2=18-14+2=6
= 判断结点+1=5+1=6
(2)该算法问题在于控制最外层循环的变量Z不仅没有经过初始化,并且在该循环内部没有任何有可能该变Z的语句。因此,该段代码中的WHILE循环部分代码要么不会执行,要么可能出现死循环。