using namespace std;
int run(int year);
int rili(int start,int year,bool print=false);
int main( )
{
int start_year=1900;
int start_xingqi=1;
cout<<"请输入一个年份,(1900-11900年之后的都可以):";
int year;
cin>>year;
if(year<1900||year>11900)
{
cout<<"您输入的年份不在1900-11900之间/n";
return 0;
}
cout<<"/n=======================下面是"<<year<<"年的日历=========================/n/n";
for (int i=start_year;i<year;i++)
{
start_xingqi=rili(start_xingqi,++start_year);
}
rili(start_xingqi,year,1);
system("pause");
return 0 ;
}
int run(int year)
{
if ((year%4==0 && year%100!=0)||year%400==0 )
{
return 366;
}
else
return 365;
}
int rili(int start,int year,bool print)
{
if(start>7)
{
return 0;
}
int temp=start;
while(temp-->1 && print==true)
{
cout<<setw(3)<<" ";
}
int mon=1;
int xingqi=start;
for (int i=start,ri=1;i<run(year)+start;i++)
{
if (print==true)
{
cout<<setw(3)<<ri++;
}
xingqi++;
if (i%7==0)
{
if(ri-8<=0 && print==true)
{
cout<<" ---"<<year<<"年,"<<mon<<"月份";
}
if (print==true)
{
cout<<endl;
}
xingqi=1;
}
if (ri>31 && mon==1)
{
ri=1;
mon++;
}
else if (ri>28 && mon==2 && run(year)==365)
{
ri=1;
mon++;
}
else if(ri>29 && mon==2 && run(year)==366)
{
ri=1;
mon++;
}
else if(ri>31 && mon==3)
{
ri=1;
mon++;
}
else if(ri>30 && mon==4)
{
ri=1;
mon++;
}
else if(ri>31 && mon==5)
{
ri=1;
mon++;
}
else if(ri>30 && mon==6)
{
ri=1;
mon++;
}
else if(ri>31 && mon==7)
{
ri=1;
mon++;
}
else if(ri>31 && mon==8)
{
ri=1;
mon++;
}
else if(ri>30 && mon==9)
{
ri=1;
mon++;
}
else if(ri>31 && mon==10)
{
ri=1;
mon++;
}
else if(ri>30 && mon==11)
{
ri=1;
mon++;
}
else if(ri>31 && mon==12)
{
ri=1;
mon++;
}
}
if (print==true)
{
cout<<endl;
}
return xingqi;
}