/*
判断闰年3
如果知道某年元月一日是星期几,能否在本程序的基础上,
编写一个打印全年日历的程序?
*/
#include <iostream>
using namespace std;
bool LeapYear(int year)
{
bool isLeapYear; //是否是闰年
//判断是否是闰年
if(year%4==0&&year%100!=0||year%400==0)
{
isLeapYear=true;
}
else
{
isLeapYear=false;
}
return isLeapYear;
}
int PerMonth(int m,int year)
{
int daysPerMonth=0; //每月的天数
switch(m)
{
case 1:
{
daysPerMonth=31;
break;
}
case 2:
{
if(LeapYear(year))
daysPerMonth=29;
else
daysPerMonth=28;
break;
}
case 3:
{
daysPerMonth=31;
break;
}
case 4:
{
daysPerMonth=30;
break;
}
case 5:
{
daysPerMonth=31;
break;
}
case 6:
{
daysPerMonth=30;
break;
}
case 7:
{
daysPerMonth=31;
break;
}
case 8:
{
daysPerMonth=31;
break;
}
case 9:
{
daysPerMonth=30;
break;
}
case 10:
{
daysPerMonth=31;
break;
}
case 11:
{
daysPerMonth=30;
break;
}
case 12:
{
daysPerMonth=31;
break;
}
}
return daysPerMonth;
}
void print(int year,int week)
{
int daysPerMonth=0; //每月的天数
int m,d,w,i;
for(m=1;m<=12;m++)
{
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<m<<"月"<<endl;
for(w=0;w<7;w++)
{
cout<<w<<'\t';
}
cout<<endl;
cout<<endl;
week=(week+daysPerMonth)%7;
for(i=0;i<week;i++)
{
cout<<'\t';
}
daysPerMonth=PerMonth(m,year);
for(d=1;d<=daysPerMonth;d++)
{
cout<<d<<'\t';
if((i+d)%7==0)
{
cout<<endl;
}
}
}
}
int main()
{
int year;
int week;
cout<<"输入某一年的年号:";
cin>>year;
cout<<"输入"<<year<<"年元月一日是星期几:";
cin>>week;
print(year,week);
return 0;
}