日期类-北京理工大学复试上机题-王道考研
程序员文章站
2024-03-21 19:54:34
...
网址
http://t.cn/E9RJUp4
日期类
描述
编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作。
输入描述:
输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。测试数据不会有闰年。
输出描述:
输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。
示例1
输入:
2
1999 10 20
2001 1 31
输出:
1999-10-21
2001-02-01
备注:
注意个位数日期前面要有0。
思路:
注意边界值的特殊判断即可,很简单。
#include<iostream>
using namespace std;
int daytab[2][13]
{
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
bool isLeapYear(int year)
{
return (year%4==0&&year%100!=0||year%400==0);
}
int main()
{
int n;
cin>>n;
while(n--)
{
int year,month,day;
scanf("%d %d %d",&year,&month,&day);
if(month == 12 && day == 31)
{
year++;
month = 1;
day = 1;
}
else if(day == daytab[isLeapYear(year)][month])
{
month++;
day = 1;
}
else
{
day++;
}
printf("%04d-%02d-%02d\n",year,month,day);
}
}