某函数包含三个输入变量year、month、day,分别表示年、月、日,函数的输出为输入日期后一天的日期。例如,输入year=2010、month=1、day=1,则函数的输出为2010年1月2日。 已定义变量year、month、day的值均为正整数,且year取值从1900到2012年。试采用等价类划分法设计测试用例。 1、完成代码编写 2、正确划分等价类,并设计测试用例
时间: 2023-04-04 20:04:30 浏览: 934
以下是我作为 CSDN 开发的 C 知道的回答:
对于您的第一个问题,我可以回答。以下是代码实现和测试用例设计:
代码实现:
```c
#include <stdio.h>
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
int getNextDay(int year, int month, int day, int *nextYear, int *nextMonth, int *nextDay) {
int daysInMonth[] = {31, 28 + isLeapYear(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (year < 1900 || year > 2012 || month < 1 || month > 12 || day < 1 || day > daysInMonth[month - 1]) {
return 0;
}
*nextYear = year;
*nextMonth = month;
*nextDay = day + 1;
if (*nextDay > daysInMonth[month - 1]) {
*nextDay = 1;
*nextMonth = month + 1;
if (*nextMonth > 12) {
*nextMonth = 1;
*nextYear = year + 1;
}
}
return 1;
}
int main() {
int year = 2010, month = 1, day = 1;
int nextYear, nextMonth, nextDay;
if (getNextDay(year, month, day, &nextYear, &nextMonth, &nextDay)) {
printf("%d年%d月%d日的下一天是%d年%d月%d日\n", year, month, day, nextYear, nextMonth, nextDay);
} else {
printf("输入日期不合法\n");
}
return 0;
}
```
测试用例设计:
等价类划分法将输入分为以下几类:
1. 有效年份、有效月份、有效日期
2. 无效年份、有效月份、有效日期
3. 有效年份、无效月份、有效日期
4. 有效年份、有效月份、无效日期
对于每个等价类,我们选择一个典型的代表值进行测试:
1. 有效年份、有效月份、有效日期
输入:year=2010, month=1, day=1
预期输出:2010年1月2日
2. 无效年份、有效月份、有效日期
输入:year=1899, month=1, day=1
预期输出:输入日期不合法
3. 有效年份、无效月份、有效日期
输入:year=2010, month=13, day=1
预期输出:输入日期不合法
4. 有效年份、有效月份、无效日期
输入:year=2010, month=1, day=32
预期输出:输入日期不合法
以上就是根据等价类划分法设计的测试用例。
阅读全文