早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

阅读下列说明,回答问题1至问题3。【说明】 以下代码由C语言书写,能根据指定的年、月计算当月所含天数

题目

阅读下列说明,回答问题1至问题3。

【说明】

以下代码由C语言书写,能根据指定的年、月计算当月所含天数。

int GetMaxDay( int year, int month )

{

int maxday = 0;

if ( month >= 1 && month <= 12 )

{

if ( month == 2 )

{

if ( year % 4 == 0 )

{

if ( year % 100 == 0 )

{

if ( year % 400 == 0 )

maxday = 29;

else

maxday = 28;

}

else

maxday = 29;

}

else

maxday = 28;

}

else

{

if ( month == 4 || month == 6 || month == 9 || month == || )

maxday = 30;

else

maxday = 31;

}

}

return maxday; }

请画出以上代码的控制流图。

请计算上述控制流图的环路复杂度V(G)。

假设year的取值范围是1000<year<2001,请使用基本路径测试法为变量year、 month设计测试用例(写出year取值、month取值、maxday预期结果),使之满足基本路径覆盖要求。

请帮忙给出每个问题的正确答案和分析,谢谢!

参考答案
问题 1 答案解析: 注:图中标注为1、2、3、4、5、6的圆可部分或全部省略。
注:图中标注为1、2、3、4、5、6的圆可部分或全部省略。 解析:考查绘制模块控制流图。
模块控制流图是与程序流程图相类似的由许多结点和连接结点的边组成的一种图形,其中一个结点代表一条语句或数条语句,边表示结点间的控制流向,它显示了一个函数的内部逻辑结构。

问题 2 答案解析:V(G)=7
V(G)=7 解析:考查计算控制流图的环路复杂性V(G)。
环路复杂性V(G)的计算方法包括:
.控制流程图中的区域数。
.条边数-结点数+2。
.判定数+1。

问题 3 答案解析:(用例编号可以不写)
(用例编号可以不写) 解析:考查基本路径测试法的应用。
路径测试法要求满足基本路径覆盖的要求。
在进行程序的基本路径测试时,从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。独立路径是指包括一组以前没有处理的语句或条件的一条路径。例如针对本题所对应的控制流图中,一组独立的路径如下。
.path1:year取值1001~2000之间任意整数,month取值13或14。
.path2:year取值1001~2000之间不能被4整除的整数,month取值2。
.path3:year取值1001~2000之间能被4整除但不能被100整除的整数,month取值2。
.path4:year取值1001~2000之间能被100整除但不能被400整除的整数,month取值2。
.path5:year取值1001~2000之间任意整数,month取值2。
.path6:year取值1001~2000之间任意整数,month取值1、3、5、7、8、10或12。
.path7:year取值1001~2000之间任意整数,month取值4、6、9或11。
路径path1、path2、path3、path4、path5、path6以及path7组成一个基本路径集。只要设计出的测试用例能够确保这些基本路径的执行,就可以使得程序中的每个可执行语句至少执行一次。