#include<stdio.h>
void main()
{
int year,a,b,i,j,e,d1,d2,m,g,h,f,p;
int day1[][6]={{28,30,30,31,31,31},{29,30,30,31,31,31}};
int day2[6]={31,31,31,31,30,30};
printf("请输入一个年份:");
scanf("%d",&year);
printf("%d年\n",year);
b=((year-1)*365+((year-1)/4)-((year-1)/100)+((year-1)/400)+1)%7;
a=!(year%4)&&(year%100)||!(year%400);
for(i=1,j=2;i<12,j<13;j++,i++)
{
printf("%2d月 ",i);
printf(" ");
printf("%2d月 \n",j);
printf("SUM MON TUE WED THU FRI SAT");
printf(" ");
printf("SUM MON TUE WED THU FRI SAT\n");
for(m=1;m<7;m++)
{
if(m==1)
{
if(i==5||i==7)
b=(b+2)%7;
else if(i==3)
if(a)
b=(b+1)%7;
else
b=b;
else if(i==9||i==11)
b=(b+3)%7;
else
b=b;
for(e=b;e>0;e--)
printf(" ");
if(b==0)
h=0;
else
h=7-b;
if(b>0&&b<7)
{
for(d1=1;d1<=7-b;d1++)
printf(" %2d ",d1);
}
else
{
for(e=7;e>0;e--)
printf(" ");
d1=b+1;
}
printf(" ");
if(j==2||j==4||j==6||j==8)
b=(b+3)%7;
else
b=(b+2)%7;
for(e=b;e>0;e--)
printf(" ");
if(b==0)
g=0;
else
g=7-b;
if(b>0&&b<7)
{
for(d2=1;d2<=7-b;d2++)
printf(" %2d ",d2);
if(d2%7==7)
printf("\n");
}
else
{
for(e=7;e>0;e--)
printf(" ");
d2=b+1;
}
}
else
{
f=h+28-day2[(i-1)/2];
p=day2[(i-1)/2]-28-h;
for(;d1<=day2[(i-1)/2];d1++)
{
printf(" %2d ",d1);
if(f>0&&d1==day2[(i-1)/2])
for(;f>0;f--)
printf(" ");
if(d1%7==h||d1==day2[(i-1)/2])
break;
}
if(m==6)
{
if(p<=0)
printf(" ");
else
{
p=7-p;
for(;p>0;p--)
printf(" ");
}
}
d1=d1+1;
printf(" ");
f=g+28-day1[a][j/2-1];
for(;d2<=day1[a][j/2-1];d2++)
{
printf(" %2d ",d2);
if(f>0&&d2==day1[a][j/2-1])
for(;f>0;f--)
printf(" ");
if(d2%7==g||d2==day1[a][j/2-1])
{
break;
printf("\n");
}
}
d2=d2+1;
}
}
i++;j++;
printf("\n");
}
}
void main()
{
int year,a,b,i,j,e,d1,d2,m,g,h,f,p;
int day1[][6]={{28,30,30,31,31,31},{29,30,30,31,31,31}};
int day2[6]={31,31,31,31,30,30};
printf("请输入一个年份:");
scanf("%d",&year);
printf("%d年\n",year);
b=((year-1)*365+((year-1)/4)-((year-1)/100)+((year-1)/400)+1)%7;
a=!(year%4)&&(year%100)||!(year%400);
for(i=1,j=2;i<12,j<13;j++,i++)
{
printf("%2d月 ",i);
printf(" ");
printf("%2d月 \n",j);
printf("SUM MON TUE WED THU FRI SAT");
printf(" ");
printf("SUM MON TUE WED THU FRI SAT\n");
for(m=1;m<7;m++)
{
if(m==1)
{
if(i==5||i==7)
b=(b+2)%7;
else if(i==3)
if(a)
b=(b+1)%7;
else
b=b;
else if(i==9||i==11)
b=(b+3)%7;
else
b=b;
for(e=b;e>0;e--)
printf(" ");
if(b==0)
h=0;
else
h=7-b;
if(b>0&&b<7)
{
for(d1=1;d1<=7-b;d1++)
printf(" %2d ",d1);
}
else
{
for(e=7;e>0;e--)
printf(" ");
d1=b+1;
}
printf(" ");
if(j==2||j==4||j==6||j==8)
b=(b+3)%7;
else
b=(b+2)%7;
for(e=b;e>0;e--)
printf(" ");
if(b==0)
g=0;
else
g=7-b;
if(b>0&&b<7)
{
for(d2=1;d2<=7-b;d2++)
printf(" %2d ",d2);
if(d2%7==7)
printf("\n");
}
else
{
for(e=7;e>0;e--)
printf(" ");
d2=b+1;
}
}
else
{
f=h+28-day2[(i-1)/2];
p=day2[(i-1)/2]-28-h;
for(;d1<=day2[(i-1)/2];d1++)
{
printf(" %2d ",d1);
if(f>0&&d1==day2[(i-1)/2])
for(;f>0;f--)
printf(" ");
if(d1%7==h||d1==day2[(i-1)/2])
break;
}
if(m==6)
{
if(p<=0)
printf(" ");
else
{
p=7-p;
for(;p>0;p--)
printf(" ");
}
}
d1=d1+1;
printf(" ");
f=g+28-day1[a][j/2-1];
for(;d2<=day1[a][j/2-1];d2++)
{
printf(" %2d ",d2);
if(f>0&&d2==day1[a][j/2-1])
for(;f>0;f--)
printf(" ");
if(d2%7==g||d2==day1[a][j/2-1])
{
break;
printf("\n");
}
}
d2=d2+1;
}
}
i++;j++;
printf("\n");
}
}