#include#defineLMonth 31#defineSMonth 30#defineVMonth 28typedefenum{
Sun,
Mon,
Jue,
Wed,
Thu,
Fri,
Sat
} WEEK;
typedefenum{
January=1,
February,
Match,
Apirl,
May,
June,
July,
August,
September,
October,
November,
December
} MONTH;voidprintMonHead(void)
{
printf("Sun Mon Jue Wed Thu Fri Sat\n");
}voidprintMonth(constWEEK firstDay,intlength )
{
WEEK weekDay=firstDay%7;inti;
printMonHead();for(i=0; i
{
printf("");
}for(i=1;i<=length;++i)
{
weekDay=(++weekDay)%7;
printf("%7d", i);if(weekDay==0) printf("\n");
}
printf("\n");
}intisLeapYear(constintyr)
{return( yr%( yr%100?4:400)?0:1);
}intgetYearDay(constintyear)
{intlastYear=year-1;intyearNum=lastYear-1899;intwalker,counter=0;for(walker=1900; walker
{if(isLeapYear(walker)==1)++counter;
}return(365*yearNum+counter+1)%7;
}voidprintYear(constinty)
{
WEEK yDay=getYearDay(y);intvDay=isLeapYear(y);intmonWeeks[13];intmonLen [13];
monLen[0]=0;
monLen[January]=31; monLen[February]=28+vDay; monLen[Match]=31;
monLen[Apirl]=30; monLen[May]=31; monLen[June]=30;
monLen[July]=31; monLen[August]=31; monLen[September]=30;
monLen[October]=31; monLen[November]=30; monLen[December]=31;
monWeeks[0]=0;
monWeeks[January]=yDay;
monWeeks[February]=((monWeeks[January]+monLen[January] )%7);
monWeeks[Match]=((monWeeks[February]+monLen[February] )%7);
monWeeks[Apirl]=((monWeeks[Match]+monLen[Match] )%7);
monWeeks[May]=((monWeeks[Apirl]+monLen[Apirl] )%7);
monWeeks[June]=((monWeeks[May]+monLen[May] )%7);
monWeeks[July]=((monWeeks[June]+monLen[June] )%7);
monWeeks[August]=((monWeeks[July]+monLen[July] )%7);
monWeeks[September]=((monWeeks[August]+monLen[August] )%7);
monWeeks[October]=((monWeeks[September]+monLen[September] )%7);
monWeeks[November]=((monWeeks[October]+monLen[October] )%7);
monWeeks[December]=((monWeeks[November]+monLen[November] )%7);inti;for(i=January; i<=December;++i)
{
printf("\n-------------------------------------------------\n");
printf("%d, %d \n",y,i);
printf("-------------------------------------------------\n");
printMonth(monWeeks[i],monLen[i]);
printf("\n");
}return;
}intmain(void)
{//int y3 = 2000;//int y3 = 1946;//printYear(y3);inty;intquit=0;do{
printf("Please enter which Year to Print For You (0 to quit):");
scanf("%d",&y);
printf("\n");if(y==0)
quit=1;elseprintYear(y);
}while(!quit);return0;
}