#include<stdio.h>
int main(void)
{
int n,rn,xq,rs;//n:年 rn:闰年 xq:星期 rs:天数
int y,k,r;//y:月 k:空的格数 r:日
puts("请输入年份:");
scanf("%d",&n);//6~7 输入年份
puts("");
puts("");
puts("");//8~10 空三行
rn=(n-1)/4-(n-1)/100+(n-1)/400;
xq=(n*365+rn-1)%7;//11~12 算出这年的1月1日是星期几
printf(" %d年\n",n);//13 打印年份
for(y=1;y<=12;y++)
{
rs=31;
if(y==2)
{
if(n%4==0&&(n%100!=0||n%400==0))
{
rs=rs-2;
}
else
{
rs=rs-3;
}
}
if(y==4||y==6||y==9||y==11)
{
rs=rs-1;
}//14~31 确定每个月的天数
printf(" %d月\n",y);//32 打印月份
puts("一 二 三 四 五 六 日");
puts("—————————————————");//33~34 打印开头
for(k=0;k<xq;k++)
{
printf(" ");
}//35~38 打印开头空的数量
for(r=1;r<=9;r++)
{
if(xq==7)
{
puts("");
xq=0;
}//41~45 每到星期日换行
printf("0%d ",r);
xq=xq+1;
}//39~48 打印0~9日
for(r=10;r<=rs;r++)
{
if(xq==7)
{
puts("");
xq=0;
}//51~55 每到星期日换行
printf("%d ",r);
xq=xq+1;
}//49~58 打印10~最后一日
puts("");
puts("");//59~60 空两行
if(xq==7)
{
xq=0;
}
}//61~65 防止上月最后一天是星期日的一个月开头多空一行
return 0;
}