描述
编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作。
输入描述:
输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。测试数据不会有闰年。
输出描述:
输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。
示例1
输入:
2
1999 10 20
2001 1 31
输出:
1999-10-21
2001-02-01
#include<stdio.h>
using namespace std;
// 下一天的日期
void nextDay(int &year, int &month, int &day) {
int dayOfMonth[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
// 判断是否是闰年
int isLeap; // 1表示闰年
isLeap = (year % 400 == 0) || (year % 4==0 && year%100!=0);
if (isLeap) {
dayOfMonth[2] = 29;
}
day++;
// 下一天已经是下一月
if (day > dayOfMonth[month]) {
month++;
day = 1;
}
// 月份超过12
if (month > 12) {
month = 1;
year++;
}
//printf("Next day is: year=%d month=%d day=%d",year, month, day);
}
int main() {
int year;
int month;
int day;
int n;
scanf("%d",&n);
for (int i=0; i<n; i++) {
scanf("%d %d %d", &year, &month, &day);
nextDay(year, month, day);
printf("%04d-%02d-%02d\n",year, month, day);
}
return 0;
}