晒晒自己的吧#include "stdafx.h"
/*声明函数GetWeekDay求某年某月某日是星期几*/
int GetWeekDay(int,int,int);
/*声明函数GetMonthDays求某年某月共有几天*/
int GetMonthDays(int,int);
/*声明函数PrintMonthCalender打印某月日历*/\
int PrintMonthCalender(int,int);
/*声明函数CheckLeap判断某年是否是闰年*/
int CheckLeap(int);
int _tmain(int argc, _TCHAR* argv[])
{
/*定义变量,startDay为要求月的第一天的星期数,
*days为要求月的天数
*/
int year,month,startDay,days;
printf("input the year and month(YYYY-MM):");
scanf("%d-%d",&year,&month);
printf("\n\t\t\t%d-%d\n",year,month);
/*引用函数GetWeekDay求要求月的首天是星期几*/
startDay=GetWeekDay(year,month,1);
/*引用函数GetMonthDays求要求月有多少天*/
days=GetMonthDays(year,month);
PrintMonthCalender(startDay,days);
return(0);
}
/*定义函数GetWeekDay求某年某月某日是星期几*/
int GetWeekDay(int year,int month,int day)
{
int days,weekday,i;
days=year*365+year/400+year/4-year/100;
/*计算从0001年1月1日到该月为止的天数*/
for(i=12;i>=month;i--)
days=days-GetMonthDays(year,i);
/*计算从0001年1月1日到该天为止的天数*/
days=days+day;
/*计算该天的星期数*/
weekday=days%7;
return weekday;
}
int GetMonthDays(int year,int month)
{
if(month==4||month==6||month==9||month==11)
return 30;
else
{
if(month==2)
{
/*对闰年的判断*/
if(CheckLeap(year))
return 29;
else
return 28;
}
else
return 31;
}
}
int PrintMonthCalender(int startDay,int days)
{
int num,count;
num=-startDay;
printf("\nSun.\tMon.\tTue.\tWed.\tThu.\tFri.\tSat.\n");
/*控制输出的天数*/
while(num<=days)
{
printf("\n");
/*对一个星期七天的控制*/
for(count=1;count<=7;count++)
{
num=num+1;
/*控制输出的天数*/
if(num>=1&&num<=days)
printf("%d\t",num);
else
printf("\t");
}
}
printf("\n");
return 0;
}
int CheckLeap(int year)
{
if((year%4==0&&year%100!=0)||(year%400==0))
return 1;
else
return 0;
}