根据公历历法,设计NextDate(mm-dd-yyyy):mm-dd-yyyy 伪代码,并设计测试用例,根据现代历法设计等价类,并设计等价类测试用例
时间: 2024-02-15 12:05:17 浏览: 91
以下是NextDate(mm-dd-yyyy)的伪代码:
```
function NextDate(month, day, year):
if (month < 1 or month > 12 or day < 1 or day > 31 or year < 1812 or year > 2012):
return "Invalid Input"
else:
if (month == 2):
if (year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)):
if (day < 1 or day > 29):
return "Invalid Input"
elif (day == 29):
return "03-01-" + year
else:
return format(day+1, "02d") + "-02-" + year
else:
if (day < 1 or day > 28):
return "Invalid Input"
elif (day == 28):
return "03-01-" + year
else:
return format(day+1, "02d") + "-02-" + year
elif (month == 4 or month == 6 or month == 9 or month == 11):
if (day < 1 or day > 30):
return "Invalid Input"
elif (day == 30):
return format(1, "02d") + "-" + format(month+1, "02d") + "-" + year
else:
return format(day+1, "02d") + "-" + format(month, "02d") + "-" + year
else:
if (day < 1 or day > 31):
return "Invalid Input"
elif (day == 31 and month == 12):
return "01-01-" + format(year+1, "04d")
elif (day == 31):
return "01-" + format(month+1, "02d") + "-" + year
else:
return format(day+1, "02d") + "-" + format(month, "02d") + "-" + year
```
下面是针对现代历法的等价类及测试用例:
1. 月份等于 2 月:
- 等价类 1:闰年的 2 月,日期为 1-29
- 输入:02-29-2000,预期输出:03-01-2000
- 输入:02-29-2004,预期输出:03-01-2004
- 输入:02-29-1904,预期输出:03-01-1904
- 等价类 2:非闰年的 2 月,日期为 1-28
- 输入:02-28-2001,预期输出:03-01-2001
- 输入:02-28-1900,预期输出:03-01-1900
- 输入:02-28-1800,预期输出:Invalid Input
- 等价类 3:月份为 2 但日期为无效值
- 输入:02-29-2001,预期输出:Invalid Input
- 输入:02-30-2000,预期输出:Invalid Input
- 输入:02-31-2000,预期输出:Invalid Input
2. 月份为每个月的最后一天:
- 等价类 1:4、6、9、11 月,日期为 30
- 输入:04-30-2000,预期输出:05-01-2000
- 输入:06-30-2000,预期输出:07-01-2000
- 输入:09-30-2000,预期输出:10-01-2000
- 输入:11-30-2000,预期输出:12-01-2000
- 等价类 2:1、3、5、7、8、10、12 月,日期为 31
- 输入:01-31-2000,预期输出:02-01-2000
- 输入:03-31-2000,预期输出:04-01-2000
- 输入:05-31-2000,预期输出:06-01-2000
- 输入:07-31-2000,预期输出:08-01-2000
- 输入:08-31-2000,预期输出:09-01-2000
- 输入:10-31-2000,预期输出:11-01-2000
- 输入:12-31-2000,预期输出:01-01-2001
- 等价类 3:每个月最后一天的无效值
- 输入:04-31-2000,预期输出:Invalid Input
- 输入:06-31-2000,预期输出:Invalid Input
- 输入:09-31-2000,预期输出:Invalid Input
- 输入:11-31-2000,预期输出:Invalid Input
- 输入:02-31-2000,预期输出:Invalid Input
3. 月份为每个月的非最后一天:
- 等价类 1:4、6、9、11 月,日期在 1-29 之间
- 输入:04-01-2000,预期输出:04-02-2000
- 输入:06-15-2000,预期输出:06-16-2000
- 输入:09-28-2000,预期输出:09-29-2000
- 输入:11-10-2000,预期输出:11-11-2000
- 等价类 2:1、3、5、7、8、10、12 月,日期在 1-30 之间
- 输入:01-01-2000,预期输出:01-02-2000
- 输入:03-15-2000,预期输出:03-16-2000
- 输入:05-28-2000,预期输出:05-29-2000
- 输入:07-10-2000,预期输出:07-11-2000
- 输入:08-31-2000,预期输出:09-01-2000
- 输入:10-16-2000,预期输出:10-17-2000
- 输入:12-30-2000,预期输出:12-31-2000
- 等价类 3:月份为 1、3、5、7、8、10、12 但日期为无效值
- 输入:01-32-2000,预期输出:Invalid Input
- 输入:03-32-2000,预期输出:Invalid Input
- 输入:05-32-2000,预期输出:Invalid Input
- 输入:07-32-2000,预期输出:Invalid Input
- 输入:08-32-2000,预期输出:Invalid Input
- 输入:10-32-2000,预期输出:Invalid Input
- 输入:12-32-2000,预期输出:Invalid Input
- 等价类 4:月份为 2、4、6、8、9、11 但日期为无效值
- 输入:02-30-2000,预期输出:Invalid Input
- 输入:04-31-2000,预期输出:Invalid Input
- 输入:06-31-2000,预期输出:Invalid Input
- 输入:08-32-2000,预期输出:Invalid Input
- 输入:09-31-2000,预期输出:Invalid Input
- 输入:11-31-2000,预期输出:Invalid Input
阅读全文