题目
编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作。
Input
输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。测试数据不会有闰年。
2
1999 10 20
2001 1 31
Output
输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。
1999-10-21
2001-02-01
code
#include <iostream>
#include<algorithm>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
using namespace std;
class Date
{
private:
int m_year, m_month, m_day;
public:
Date(){};
Date(int year, int month, int day);
void func();
void show();
};
Date::Date(int year,int month, int day)
{
m_year = year;
m_month = month;
m_day = day;
}
void Date::func()
{
if (m_month == 2)
{
if (m_day == 28)
{
m_month++;
m_day = 1;
}
else
{
m_day++;
}
}
else if (m_month == 12)
{
if (m_day == 31)
{
m_year++;
m_month = 1;
m_day = 1;
}
else
{
m_day++;
}
}
else if(m_month == 1 || m_month == 3 || m_month == 5 || m_month == 7 || m_month == 8 || m_month == 10)
{
if (m_day == 31)
{
m_month++;
m_day = 1;
}
else
{
m_day++;
}
}
else
{
if (m_day == 30)
{
m_month++;
m_day = 1;
}
else
{
m_day++;
}
}
}
void Date::show()
{
printf("%d-", m_year);
if (m_month < 10)
{
printf("0");
}
printf("%d-", m_month);
if (m_day < 10)
{
printf("0");
}
printf("%d\n", m_day);
}
int main()
{
int m;
cin >> m;
while (m--)
{
int year, month, day;
cin >> year >> month >> day;
Date date(year, month, day);
date.func();
date.show();
}
return 0;
}