题解 | #日期类#
日期类
http://www.nowcoder.com/practice/130aa2d7d1f5436b920229dca253893b
思路
记住前面的代码 注意边界情况 判断的时候++d
AC代码
#include<iostream>
using namespace std;
const int M[13]={
0,31,28,31,30,31,30,31,31,30,31,30,31
};
const int N=365;
int is_leap(int y){
if(y%4==0 && y%100 || y%400==0) return 1;
return 0;
}
int get_days(int y,int m){
if(m==2) return M[m]+is_leap(y);
return M[m];
}
int get_year_days(int y,int m){
if(m<=2) return N+is_leap(y);
return N+is_leap(y+1); //二月在下一年
}
int main(){
int n;
cin >> n;
while(n--){
int y,m,d;
cin >> y >> m >> d;
if(++d > get_days(y, m)){
d=1;
if(++m > 12){
m=1,y++;
}
}
printf("%04d-%02d-%02d\n",y,m,d);
}
return 0;
}