阅读下列说明,回答问题 1 至问题 2(共25分)。 [说明] 以下代码由 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] 请画出以上代码的程序流程图。(10分) [问题 2] 假设 year 的取值范围是 1900 <= year <= 2100,请使用逻辑覆盖测试法为变量 year、month 设计测试用例(写出 year 取值、month 取值、maxday 预期结果),使之满足语句覆盖,条件覆盖和路径覆盖。(15分)
时间: 2024-02-29 11:54:47 浏览: 83
c语言代码,输入年月日计算天数
[问题 1] 程序流程图如下:
![程序流程图](https://i.imgur.com/zYb8z3N.png)
[问题 2]
根据题目要求,需要分别设计测试用例来满足语句覆盖、条件覆盖和路径覆盖。下面是一个可能的测试用例集合:
语句覆盖:
| year | month | 预期结果 |
|------|-------|----------|
| 1900 | 1 | 31 |
| 2000 | 2 | 29 |
| 2021 | 3 | 31 |
| 2100 | 4 | 30 |
条件覆盖:
| year | month | 预期结果 |
|------|-------|----------|
| 1900 | 1 | 31 |
| 2000 | 2 | 29 |
| 2000 | 3 | 31 |
| 2100 | 4 | 30 |
路径覆盖:
| year | month | 预期结果 |
|------|-------|----------|
| 1900 | 1 | 31 |
| 2000 | 2 | 29 |
| 2001 | 2 | 28 |
| 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 |
| 2100 | 1 | 31 |
| 2100 | 2 | 28 |
| 2100 | 3 | 31 |
| 2100 | 4 | 30 |
阅读全文