给出年份,和天数,计算日期,记得天数从1月0号开始,然后判断即可。
#include<stdio.h>
#include<iostream>
using namespace std;
int month_Y[13][2] = {
{0,0},
{31,31},
{28,29},
{31,31},
{30,30},
{31,31},
{30,30},
{31,31},
{31,31},
{30,30},
{31,31},
{30,30},
{31,31}
};
int year_Y(int y) {
if((y%400==0)||(y%4==0&&y%100!=0)) {
return 1;
}
return 0;
}
int main(){
int year;
int mount;
int month;
int day;
while(scanf("%d %d",&year,&mount)!=EOF){
month = 1;
day = 0;//必须从00开始!!! 因为如果day先加了,过了临界点31,重新更新了day,但是日期差1天,本应该是“保持不变的天数”
int sum = 0;//sum1天,即day也加一天,比如说 1
while(sum < mount){
day++;//下面会出问题,如果day为1开始的话
if(day==month_Y[month][year_Y(year)]+1){
day = 1;
month++;
}
if(month == 13){
month = 1;
year++;
}
sum++;
}
printf("%04d-%02d-%02d\n",year,month,day);
}
return 0;
}