#include <iostream.h>
#include <iomanip.h>
#include <stdio.h>
char* weekd[7]={"SUN","MON","TUE","WEN","THU","FRI","STA"};
int year;
int l,c;
int day[13][3];
int i,j,k,t;
int getyear()
{
cout<<"请输入你想要查询的年份:";
cin>>year;
return year;
} //判断是否为闰年。
int ioleapyear()
{
if(year%4==0&&year%100!=0||year%400==0)
return 1;
else return 0;
}
int weekday(int b) //计算每年第一天是星期几。
{
return ((b-1)+(b-1)/4-(b-1)/100+(b-1)/400+1)%7;
}
int monthday(int i) //计算每个月多少天。
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) return 31;
else if (i==2)
if(ioleapyear()) return 29;
else return 28;
else return 30;
}
void putout(){
cout<<"你要输入几行几列(请让行与列相乘为12):";
cin>>l>>c;
day[1][0]=weekday(year);
day[1][1]=1;
day[1][2]=31;
for(i=2;i<=12;i++){
day[i][0]=( day[i-1][0]+monthday(i-1) )%7;
day[i][1]=1;
day[i][2]=monthday(i);
}
for(i=0;i<l;i++){
for(int j=0;j<c;j++){
if(j)cout<<" ";
cout<<"----------"<<i*c+j+1<<"----------";
}
cout<<endl;
for(j=0;j<c;j++){
if(j)cout<<" ";
cout<<"日 一 二 三 四 五 六";
}
cout<<endl;
for(k=0;k<6;k++){
for(j=0;j<c;j++){
if(k!=0)day[i*c+j+1][0]=0;
if(j)cout<<" ";
for(t=1;t<day[i*c+j+1][0];t++)cout<<" ";
while(day[i*c+j+1][0]!=7&&day[i*c+j+1][1]<=day[i*c+j+1][2]){
printf("%2d ",day[i*c+j+1][1]);
day[i*c+j+1][0]++;
day[i*c+j+1][1]++;
}
if(day[i*c+j+1][1]>day[i*c+j+1][2])
for(t=day[i*c+j+1][0];t<7;t++)cout<<" ";
}
cout<<endl;
}
}
}
int main(){
getyear();
putout();
getchar();
return 0;
}