【C程序】
int GetMaxDay( int year, int month){
int maxday=0; //1
if( month>=1&&month<=12){ //2,3
if(month==2){ //4
if( year%4==0){ //5
if(year%100==0){ //6
if( year%400==0) //7
maxday= 29; //8
else //9
maxday= 28;
}
else //10
maxday= 29;
}
else
maxday = 28; //11
}
else{ //12
if (month==4||month==6||month==9||month==11) //13, 14,15,16
maxday = 30; //17
else //18
maxday = 31;
}
}
return maxday; //19
}
【问题1】(6分)
请针对上述C程序给出满足100%DC(判定覆盖)所需的逻辑条件。
【问题2】(9分)
请画出上述程序的控制流图,并计算其环路复杂度V(G)。
【问题3】(5分)
请给出问题2中控制流图的线性无关路径。
【问题1】:
Month>=1&&month<=12
Month<1||month>12(或者与之等价的,使得判定为假)
Month==2
Month!=2(或者与之等价的,使得判定为假)
Year%4==0
Year%4!=0(或者与之等价的,使得判定为假)
Year%100==0
Year%100!=0 (或者与之等价的,使得判定为假)
Year%400==0
Year%400!=0(或者与之等价的,使得判定为假)
Month==4 ||Month==6 ||Month==9 ||Month==11
Month!=4 ||Month!=6 ||Month!=9 ||Month!=11(或者与之等价的,使得判定为假)
【问题2】:
V(G)=11
【问题3】:
1、2、19
1、2、3、19
1、2、3、4、12、13、17、19
1、2、3、4、12、13、14、17、19
1、2、3、4、12、13、14、15、17、19
1、2、3、4、12、13、14、15、16、17、19
1、2、3、4、12、13、14、15、16、18、19
1、2、3、4、5、11、19
1、2、3、4、5、6、10、19
1、2、3、4、5、6、7、9、19
1、2、3、4、5、6、7、8、19