看看这个吧:
#include "stdio.h"
void main()
{int year,month,day,weekday=0,len_of_month,i;
printf("此程序实现输入任一年份后打印该年的年份\n");
printf("请输入年份(输入负数退出系统):");
do{loop:scanf("%d",&year);
if(year<=0) break;
else if(year>=9999)
{printf("对不起,您输入的数据过大,请重新输入!\n"); goto loop;}
for(i=1;i<year;i++)
{if(i%400==0||i%100!=0&&i%4==0) weekday++; /*计算year年前闰年的个数*/
else continue;}
weekday=(year%7+weekday%7)%7; /*以1年1月1日是星期一来确定year年元旦的星期数*/
for(month=1;month<=12;month++)
{printf("\n\t < %d月>\n",month);
printf("---------------------------\n");
printf("日 一 二 三 四 五 六 \n");
printf("---------------------------\n");
for(i=0;i<weekday;i++)printf(" ");/* 四个空格(输出元旦星期数前的空格数)*/
if(month==4||month==6||month==9||month==11) len_of_month=30;
else if(month==2)
{if(year%4==0&&year%100!=0||year%400==0) len_of_month=29;
else len_of_month=28;
}
else len_of_month=31;
for(day=1;day<=len_of_month;day++)
{ printf("%-4d",day);weekday++;
if(weekday==7){ weekday=0;printf("\n");}
}getch();
}
printf("\n请输入年份(输入负数退出系统):");weekday=0;
}while(year>0);
}