winnestar 发表于 2012-10-28 09:12:01

基本路径覆盖和环路复杂度

基本路径集数就是环路复杂度,就是对应的控制流程图的v(g)=e-n+2=分割的区域数=判定节点数+1,好像有这些说法,但是现在对控制流程图的画法有问题,请大家分析。我是在准备测评师考试,在参考答案上看来的。

2011年下午试题有要求话控制流程图的,程序如下
do{
    if(*P='r')                  //2
      smode='r';                   //3
    if('P>='0'&&*P<='9'){          //4,5
      level=*P-'0';                //6
    )else if(*P='f'){             //7
      strategy=1;                  //8
    }else {                        //9
       *m++=*p;
    }
    *p++;                        //10
}while(m!=fmode+sizeof(fmode));//11
}                                  //12

这里4,5两个条件语句组成一个判定,流程图中将此分开处理,如下

问题是?为什么红线附近有4,5两个判断呢,这里对应了程序中4,5两个条件组成的一个判定语句?这么说来一个判定节点就是一句条件语句?

然而,09年的下午题中,有个设计基本路径的计算,程序如下

int g, s, b, q;
    if ( ( n > 1000 ) && ( n < 2000 ) )
    {
    g = n % 10;
    s = n % 100 / 10;
    b = n / 100 % 10;
    q = n / 1000;
    if( ( q + g ) == ( s + b ) )
    {
    printf("%-5d", n);
    }
    }
    printf("\n")
    return;、

答案显示流程图的v(g)=3,当然参考答案没有画出流程图,但是我个人觉得画图的话主要区别就在于第一个if语句,如果把&&的两个条件分开判定,那么就有三个判定节点,v(g)=4了,这是根据上题的做法来的,但是这题又没有分开,请问到底这个流程图要怎么画呢,下面是我的画法,请大家指正

简要说明问题就是一个由多个条件组成的判定在流程图中到底是算一个判定节点呢还是算多个节点?
页: [1]
查看完整版本: 基本路径覆盖和环路复杂度