以下代码由 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 == 11 ) maxday = 30; else maxday = 31; } } return maxday; } [问题 1] 请画出以上代码的程序流程图。 [问题 2] 假设 year 的取值范围是 1900 <= year <= 2100,请使用逻辑覆盖测试法为变量 year、month 设计测试用例(写出 year 取值、month 取值、maxday 预期结果),使之满足语句覆盖,条件覆盖和路径覆盖
时间: 2024-04-28 19:23:01 浏览: 33
[回答 1] 以下是程序流程图:
![程序流程图](https://i.imgur.com/l5atJW9.png)
[回答 2]
- 语句覆盖测试用例:
| year 取值 | month 取值 | maxday 预期结果 |
| --- | --- | --- |
| 1900 | 1 | 31 |
| 2000 | 2 | 29 |
| 2100 | 12 | 31 |
- 条件覆盖测试用例:
| year 取值 | month 取值 | maxday 预期结果 |
| --- | --- | --- |
| 2000 | 1 | 31 |
| 2000 | 2 | 29 |
| 2000 | 3 | 31 |
- 路径覆盖测试用例:
| year 取值 | month 取值 | maxday 预期结果 |
| --- | --- | --- |
| 2000 | 1 | 31 |
| 2000 | 2 | 29 |
| 2000 | 3 | 31 |
| 2000 | 4 | 30 |
| 2000 | 5 | 31 |
| 2000 | 6 | 30 |
| 2000 | 7 | 31 |
| 2000 | 8 | 31 |
| 2000 | 9 | 30 |
| 2000 | 10 | 31 |
| 2000 | 11 | 30 |
| 2000 | 12 | 31 |
相关问题
阅读下列说明,请画出以下代码的程序流程图。 [说明] 以下代码由 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 == 11 ) maxday = 30; else maxday = 31; } } return maxday; }
```
开始
输入年份和月份
定义变量maxday并初始化为0
判断月份是否在1到12之间
如果是2月
判断是否为闰年
如果是闰年
判断是否为世纪闰年
如果是世纪闰年,天数为29天
否则,天数为28天
否则,天数为28天
如果是4月、6月、9月、11月
天数为30天
否则
天数为31天
返回天数maxday
结束
```
程序流程图如下:
```
┌───────┐
│开始 │
└───────┘
│
▼
┌───────────────────────┐
│输入年份和月份 │
└───────────────────────┘
│
▼
┌───────────────────────┐
│定义变量maxday并初始化为0│
└───────────────────────┘
│
▼
┌───────────────────────┐
│判断月份是否在1到12之间 │
└───────────────────────┘
│
├─是───────┐ ┌─否───────┐
▼ │ ▼ │
┌─────────────┐┌─────────────┐
│如果是2月 ││如果不是2月 │
│判断是否为闰年 ││判断是否为4、6、9、11月│
│ ├─是───────┐ ││ ├─是───────┐ │
│ ▼ │ ││ ▼ │ │
│┌───────────────┐│ ││┌────────────────┐│
││如果是闰年 ││ │││天数为30天 ││
││判断是否为世纪闰年 ││ ││└────────────────┘│
││ ├─是───────┐ │ ││ │
││ ▼ │ │ ││ ▼
││┌─────────────┐│ │ ││┌────────────────┐
│││天数为29天 ││ │ ││天数为31天 ││
││└─────────────┘│ │ ││└────────────────┘│
││ │ ││ │
││ ▼ ││ ▼
││┌────────────────┐│ │ ││┌─────────────┐ │
│││天数为28天 ││ ││返回天数maxday│
││└────────────────┘│ │ │└─────────────┘ │
│└───────────────┘│ │ │
└───────────────┘ └─────────┘
```
以下代码由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预期结果),使之满足基本路径覆盖要求
抱歉,作为语言模型,我无法在此处插入图片,但我可以为您提供一份文字版的控制流图和环路复杂度计算。
控制流图如下:
```
┌───┐
│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
通过以上四组测试用例,我们可以实现对基本路径的完全覆盖。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)