编写一个C++程序,随机生成NextDate函数的100条测试用例
时间: 2024-04-29 08:22:46 浏览: 9
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int NextDate(int year, int month, int day);
int main() {
srand(time(NULL)); // 设置随机数种子为当前时间
int year, month, day;
for (int i = 0; i < 100; i++) {
// 随机生成年月日
year = rand() % 100 + 1900; // 1900年到1999年之间
month = rand() % 12 + 1; // 1月到12月之间
if (month == 2) { // 2月特殊处理
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { // 闰年
day = rand() % 29 + 1; // 1号到29号之间
} else { // 平年
day = rand() % 28 + 1; // 1号到28号之间
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) { // 小月
day = rand() % 30 + 1; // 1号到30号之间
} else { // 大月
day = rand() % 31 + 1; // 1号到31号之间
}
printf("%d-%02d-%02d -> ", year, month, day);
NextDate(year, month, day);
printf("\n");
}
return 0;
}
int NextDate(int year, int month, int day) {
int nextYear, nextMonth, nextDay;
if (year < 1900 || year > 1999 || month < 1 || month > 12 || day < 1 || day > 31) {
printf("输入日期不合法\n");
return -1;
}
if (month == 2) { // 2月特殊处理
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { // 闰年
if (day == 29) {
nextYear = year;
nextMonth = 3;
nextDay = 1;
} else if (day < 29) {
nextYear = year;
nextMonth = month;
nextDay = day + 1;
} else {
printf("输入日期不合法\n");
return -1;
}
} else { // 平年
if (day == 28) {
nextYear = year;
nextMonth = 3;
nextDay = 1;
} else if (day < 28) {
nextYear = year;
nextMonth = month;
nextDay = day + 1;
} else {
printf("输入日期不合法\n");
return -1;
}
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) { // 小月
if (day == 30) {
nextYear = year;
nextMonth = month + 1;
nextDay = 1;
} else if (day < 30) {
nextYear = year;
nextMonth = month;
nextDay = day + 1;
} else {
printf("输入日期不合法\n");
return -1;
}
} else { // 大月
if (day == 31) {
if (month == 12) {
nextYear = year + 1;
nextMonth = 1;
nextDay = 1;
} else {
nextYear = year;
nextMonth = month + 1;
nextDay = 1;
}
} else if (day < 31) {
nextYear = year;
nextMonth = month;
nextDay = day + 1;
} else {
printf("输入日期不合法\n");
return -1;
}
}
printf("%d-%02d-%02d\n", nextYear, nextMonth, nextDay);
return 0;
}
```