int calendar[12][6][7];/*月历*/
char* week[]={\"Sunday\char* Monthname[]={\"January\ \"August\int monthday[]={31,28,31,30,31,30,31,31,30,31,30,31}; char* menu[]={/*操作菜单*/ \"**************** 日历显示系统 *******************\\n\\n\
\"1.Input a year number,check whether it's a leap year.\\n\ \"2.Input year,month,day,check the weekday.\\n\
\"3.Input year,month,output the calendar of that month.\\n\ \"4.Input year,output all the month calendar.\\n\ \"0.Exit.\\n\" };
/*判断参数year传递的年份是否是闰年*/ int IsLeapyear(int year) {
if(year%4!=0||year%100==0&&year%400!=0) return 1; else return 0; }
/*输入年月日,判断星期几,利用公式w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
w是结果星期数,y是年份的后两位,c是年份的前两位,m是月份,3≤m≤14,也就是当 m≤2时,要算到前一年的13月份和14月份,最后要将w对7取模 */
int WeekDay(int year,int month,int day) {
int w,y,c,m,d; c=year/100; if(month<3){ m=12+month; y=year%100-1; } else{
m=month; y=year%100; }
d=day;
w=y+y/4+c/4-2*c+26*(m+1)/10+d-1; return (w%7+7)%7; }
/*输入年份,月份,打印出本月的日历*/
void Monthly(int year,int month) {
int weekday,i,j; if(month==2)
if(IsLeapyear(year)) monthday[1]+=1; weekday=WeekDay(year,month,1); printf(\"%s\\n\
printf(\"Sun. Mon. Tue. Wed. Thu. Fri. Sat.\\n\");
for(i=1,j=weekday;i<=monthday[month-1];i++,j++){ calendar[month-1][j/7][j%7]=i; }
for(i=0;i<6;i++){ for(j=0;j<7;j++) {
if(calendar[month-1][i][j]==0) printf(\"%5c\ else printf(\"%-5d\ }
printf(\"\\n\"); } }
void allMonth(int year) /*输入年份,打印出12个月的月历*/ { int i;
for(i=1;i<=12;i++){ Monthly(year,i);
//getch();/*按任意键继续执行*/ } }
void main(void) {
int year,month,day,i,n,weekday;
memset(&calendar,sizeof(calendar),0); /*初始化月历*/ for(i=0;i<5;i++)
printf(\"%s\ while(1){
printf(\"Please choose the menu:\"); scanf(\"%d\ printf(\"\\n\"); switch(n){ case 1:
printf(\"Please input year:\"); scanf(\"%d\
if(IsLeapyear(year)) printf(\"\\n%d is leap year.\\n\ else printf(\"%d isn't leap year.\\n\
break; case 2:
printf(\"Please input year month day:\"); scanf(\"%d%d%d\ printf(\"\\n\");
weekday=WeekDay(year,month,day);
printf(\"That day is %s\\n\ break; case 3:
printf(\"Please input year month,then it output a calendar of that month:\"); scanf(\"%d%d\ printf(\"\\n\");
Monthly(year,month); break; case 4:
printf(\"Please input year,then it will output the calendar of that year:\"); scanf(\"%d\ printf(\"\\n\"); allMonth(year); break; case 0: return; default:
printf(\"The number you input is invalid.\\n\"); break; } }
getch(); /*按任意键,程序退出*/ }
因篇幅问题不能全部显示,请点此查看更多更全内容