日期类
北京理工大学机试题
题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb
编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作。
输入输出格式
输入描述:
输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。测试数据不会有闰年。
输出描述:
输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。
输入输出样例
输入样例#:
2 1999 10 20 2001 1 31
输出样例#:
1999-10-21 2001-02-01
提示
注意个位数日期前面要有0。
解题方法
思路
判断day+1之后会不会超过当月的天数,如果超过month+1,若月大于12,则year+1
注意每次的输入要对二月数据进行复位
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
int year,month,day;
int a[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
while(cin>>n) {
while(n--) {
cin>>year>>month>>day;
a[2] = 28;//数据复位
if(year%4==0&&year%100!=0||year%400==0) a[2] = 29;
if(a[month]<day+1) {
day=1;
month++;
if(month>12) {
month=1;
year++;
}
}else{
day++;
}
if(month<10) {
if(day<10) cout<<year<<"-0"<<month<<"-0"<<day<<endl;
else cout<<year<<"-0"<<month<<"-"<<day<<endl;
} else {
if(day<10) cout<<year<<"-"<<month<<"-0"<<day<<endl;
else cout<<year<<"-"<<month<<"-"<<day<<endl;
}
}
}
return 0;
}