/************************************************************
* Code wrote by Yang Jian Chun © v1.0
* Time: 20/11/2015 15:06:44
* Description: Generate calender
************************************************************/
#include "time.h"
#include "stdio.h"
int main(void)
{
struct tm setDate;
int year=0;
int weekDay;
int monthDay;
int i,j;
char *month[]={"January" ,"February","March","April","May" ,"June" ,"July","August", "September", "October","November"};
while(year < 1970)
{
system("clear");
printf("input year(greater than 1970):");
scanf("%d",&year);
}
setDate.tm_year=year-1900;
setDate.tm_mon=0;
setDate.tm_mday=1;
setDate.tm_hour=0;
setDate.tm_min=0;
setDate.tm_sec=0;
setDate.tm_isdst=0;
mktime(&setDate);
weekDay=setDate.tm_wday;
for(i=0;i<12;i++)
{
printf("\n\t\t\t%s %d\n",month[i],year);
printf("\n\tMo\tTu\tWe\tTh\tFr\tSa\tSU\t\n\t");
switch(i)
{
case 0:case 2:case 4:case 6:case 7:case 9:case 11:monthDay=31;break;
case 3:case 5:case 8:case 10:monthDay=30;break;
case 1:if(year%100==0 && year%400==0 || year%100!=0 && year%4==0)monthDay=29;else monthDay=28;break;
default:break;
}
for(j=1;j<weekDay;j++)
{
printf("\t");
}
for(j=1;j<=monthDay;j++)
{
printf("%d\t",j);
if(++weekDay==8)
{
weekDay=1;
printf("\n\t");
}
if(weekDay!=1 && j==monthDay)
{
printf("\n\t");
}
}
}
return 0;
}