该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
int isLeap(int year)
{
if((year%4==0&&year%100!=0)||(year%400==0))
return 1;
else
return 0;}
int GetMonthDays(int year,int month)
{int z;
if(isLeap(year)==1&&month==2)
{z=29;}
switch(month)
{case 1:case 3: case 5:case 7:case 8: case 10:
case 12:{z=31;break;}
case 2:{z=28;break;}
case 4:case 6: case 9:
case 11:{z=30;break;}}
return z;}
int GetWeekDay(int year,int month,int day)
{int days,weekDay,k,m;
days=(year-1)*365+(year-1)/400+(year-1)/4-(year-1)/100;
k=1;m=month;m=m-1;
while(k<=m)
{days=days+GetMonthDays(year,k);
k=k+1;}
days=days+day;
weekDay=days%7;
return(weekDay);}
void PrintMonthCalender(int startDay,int Days)
{int n,year,month;n=1;
printf("Sun.\tMon.\tTue.\tWed.\tThu.\tFri.\tSat.\n");
switch(startDay)
{case 0:printf("%d\t",n);break;
case 1:printf("\t%d\t",n);break;
case 2:printf("\t\t%d\t",n);break;
case 3:printf("\t\t\t%d\t",n);break;
case 4:printf("\t\t\t\t%d\t",n);break;
case 5:printf("\t\t\t\t\t%d\t",n);break;
case 6:printf("\t\t\t\t\t\t%d\n",n);break;}
do
{startDay=GetWeekDay(year,month,++n);
switch(startDay)
{case 0:printf("%d\t",n);break;
case 1:printf("%d\t",n);break;
case 2:printf("%d\t",n);break;
case 3:printf("%d\t",n);break;
case 4:printf("%d\t",n);break;
case 5:printf("%d\t",n);break;
case 6:printf("%d\n",n);break;}
startDay=0;
}
while(n<=Days);}
main()
{int startDay,days,year,month;
printf("Please input year and month:");
scanf("%d%d",&year,&month);printf("The result is:\n");
days=GetMonthDays(year,month);
startDay=GetWeekDay(year,month,1);
PrintMonthCalender(startDay,days);printf("\n");
system("pause");
return 0;
}