日期问题掌握规律就很好解决了,主要是处理闰年2月这个问题,输出格式有要求前置0的话用C语言的输出方式即可。
#include <iostream>
using namespace std;
struct da{
int year;
int month;
int day;
}date[100];
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void is(int y){
if((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
mon[2] = 29;
else
mon[2] = 28;
}
int main(){
int n,number;
while (scanf("%d",&n) != EOF){
for(int i = 0;i < n;i++){
scanf("%d%d%d%d",&date[i].year,&date[i].month,&date[i].day,&number);
is(date[i].year);
int y = date[i].year,m = date[i].month,d = date[i].day;
if(number <= mon[m+1] - d){
d = d + number;
}else {
while (number > mon[m] - d) {
number -= mon[m];
m++;
if (m > 12) {
y++;
is(y);
m = 1;
}
}
d = d + number;
}
printf("%d-%02d-%02d\n",y,m,d);
}
}
}
网友评论