模拟翻日历的方式,然后对闰年2月份和平年2月份进行特判
#include <iostream>
using namespace std;
bool is_leap(int year)
{
//四年一润,百年不润,四百年再润
if(year%4==0&&year%100!=0||year%400==0)
{
return true;
}
return false;
}
int main()
{
int year=1777,month=4,day=30;
//我们用i来枚举,i从0到8112也就是8113天
for(int i=0;i<8112;i++)
{
//开始翻日历
day++;
//过去了一年
if(day==32&&month==12) // 12月32 即下一年的1月1
{
year++;
month=1;
day=1;
continue; //找到一种情况,结束循环,去找下一种情况
}
//一个月31天的情况
if((month==1||month==3||month==5||month==7||month==8||month==10)&&day==32)
{
month++;
day=1;
continue;
}
//一个月30天的情况
if((month==4||month==6||month==9|month==11)&&day==31)
{
month++;
day=1;
continue;
}
//对2月份进行特判
//闰年2月份
if(month==2&&is_leap(year)&&day==30)
{
month++;
day=1;
continue;
}
//平年2月份
if(month==2&&!is_leap(year)&&day==29)
{
month++;
day=1;
continue;
}
}
printf("%04d-%02d-%02d\n",year,month,day);
return 0;
}