#include<iomanip>
using namespace std;
int FirstDayofYear (int y);
int DaysofMonth(int m);
void printMonth(int m);
void printHead(int m);
bool LeapYear(int y);
int WeekDay,year;
main()
{
cerr<<"please enter the year(>1):";
cin>>year;
WeekDay=FirstDayofYear(year);
cout<<"\n\n"<<year<<"Year\n";
cout<<"==……==";
for (int a=1;a<13;a++)
printMonth(a);
cout<<"\n";
system("pause");
getchar();
}
void printMonth(int m)
{
printHead(m);
int day=DaysofMonth(m);
for(int i=1;i<=day;i++)
{
cout<<setw(5)<<i;
WeekDay=(WeekDay+day)%7;
if(WeekDay==0)
{
cout<<endl;
cout<<setw(5)<<" ";
}
}
}
void printHead(int m)
{
cout<<"\n\n"<<setw(2)<<m;
cout<<"Month"<<setw(5)<<" Sunday"<<setw(5)<<"Monday"<<setw(5)<<"Tuesday"<<setw(5)<<"Wednesday"<<setw(5)<<"Thursday"\
<<setw(5)<<"Friday"<<setw(5)<<"Saturday\n";
cout<<setw(5)<<" ";
for(int i=0;i<WeekDay;i++)
cout<<setw(5)<<" ";
}
int DaysofMonth(int m)
{
switch(m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if(LeapYear(year))
return 29;
else
return 28;
}
return 0;
}
bool LeapYear(int y)
{
if((y%4==0) && (y%100 !=0) || (y%400==0))
return TRUE;
else
return FALSE;
}
int FirstDayofYear(int y)
{
long m;
m=y*365;
for(int i=1;i<y;i++)
m+=LeapYear(i);
return m%=7;
}


