题解 | #日期累加#
日期累加
https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d
#include <stdio.h>
int Is_run(int year){
return (year % 4 == 0 && year % 100 != 0)||year % 400 == 0;
}
void Date(int year,int month,int day,int after_day){
int date[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}};
int next_year,next_month,next_day,isrun,d;
d = after_day + day;
next_month = month;
next_year = year;
while(d>0){
isrun = Is_run(next_year);
d -= date[isrun][next_month++];
if(next_month>12){
next_month=1;
next_year ++;
}
}
next_month--;
if(next_month < 1){
next_month = 12;
next_year--;
}
d += date[isrun][next_month];
next_day = d;
printf("%d-%02d-%02d\n",next_year,next_month,next_day);
}
int main() {
int times;
int year,month,day,after_day;
scanf("%d",×);
for(int i = 0;i<times;i++){
scanf("%d %d %d %d",&year,&month,&day,&after_day);
Date(year, month, day, after_day);
}
return 0;
}
查看2道真题和解析