diff --git a/seatung.h b/seatung.h new file mode 100644 index 0000000..44550e4 --- /dev/null +++ b/seatung.h @@ -0,0 +1,230 @@ +#include "wudi.h" +void printBlank(int n); +void printYearCalendar(); +void createMonthCalendar(int year,int month); +void printMonthCalendar(); +int getWeekDay(int year,int month,int day); +int getDays(int year,int month); +int menu(); +void third(); +int getDays(int year,int month)// 得到该月有多少天 +{ + switch(month) + { + case 1:case 3:case 5:case 7:case 8:case 10:case 12:// 这些月份有31日 + return 31; + break; + case 4:case 6:case 9:case 11:// 这些月份有30日 + return 30; + break; + case 2: + return isLeapYear(year)?29:28;// 如果该年为闰年,2月有29日,否则2月只有28日 + default: + return 0;// 如果月份输入有误,返回0 + } +} +int getWeekDay(int year,int month,int day)// 得到该日期是星期几 +{ + // 基姆拉尔森计算公式 + int w;// 代表星期 + if(month<3) + { + month+=12; + year-=1; + } + w=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400+1)%7;// w的取值范围为0到6,0为星期日,1为星期一 + return w; +} +void printMonthCalendar()// 得到某年某月的日历 +{ + int year,month,day,m,i; + loop:system("cls"); + while(1) + { + printf("\n请输入年月来查询您要的月份的日历:"); + scanf("%d%d",&year,&month); + if(year>=1900&&year<=2100&&month>0&&month<13) + { + break; + } + printf("\n输入的年月不合规,请重新输入。"); + } + int firstDay=getWeekDay(year,month,1); + int daysMonth=getDays(year,month); + printf(" %d年%d月 \n",year,month); + printf(" SUN MON TUE WED THU FRI SAT \n"); + + for(i=0;i