以下代码由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预期结果),使之满足基本路径覆盖要求
时间: 2024-03-18 10:39:14 浏览: 171
抱歉,作为语言模型,我无法在此处插入图片,但我可以为您提供一份文字版的控制流图和环路复杂度计算。
控制流图如下:
```
┌───┐
│month≥1 and month≤12│
└───┘
│
┌────┴────┐
│ month=2 │
└────┬────┘
│
┌────┴────┐
│year%4==0│
└────┬────┘
│
┌────┴────┐
│year%100=0│
└────┬────┘
│ │
│ │
┌─┴──┴─┐
│year%400=0│
└──┬───┬──┘
│ │
maxday=29 maxday=28
│
┌────┴────┐
│ month≠2 │
└────┬────┘
│
┌────┴────┐
│ month=4 │
└────┬────┘
│ │
│ │
┌─┴──┴─┐
│month=6 │
└──┬───┬──┘
│ │
maxday=30 maxday=30
│
┌────┴────┐
│ month≠4,6,9,11 │
└────┬────┘
│
maxday=31
│
return
```
环路复杂度V(G) = E-N+2 = 14-12+2 = 4
接下来,我们使用基本路径测试法为变量year、month设计测试用例,使之满足基本路径覆盖要求,即每个基本路径至少被执行一次。
基本路径1: 1-2-3-4-7-8-11-14
取值:year=2000, month=2, maxday=29
基本路径2: 1-2-3-5-6-7-8-11-14
取值:year=2001, month=2, maxday=28
基本路径3: 1-2-9-10-11-14
取值:year=2000, month=4, maxday=30
基本路径4: 1-2-9-12-13-11-14
取值:year=2000, month=5, maxday=31
通过以上四组测试用例,我们可以实现对基本路径的完全覆盖。
阅读全文