#include int isAvailable(int year); void getDay(int year,int first_day[]); int weak(int year); void drawCalendar(int days[],int first_day[]); int main(){ int year=0; int days[12]={31,28.31,30,31,30,31,30,31,30,31,30}; int first_day[12]={0}; int i,t; for(t=1;t==1;){ int n; printf("=============兴趣使然=============\n"); printf("1.查询某年日历(单列输出)\n"); printf("2,查询某年是什么年\n"); printf("3.查询某年某月是星期几\n"); printf("4.退出系统\n\n"); printf("请输入选项下:"); scanf("%d",&n); while(1){ if(n==1){ printf("请输入要查询的年份:"); scanf("%d",&year); if(!isAvailable(year)){ break; } getDay(year,first_day); if((year%4==0 && year%100!=0) || year%400==0){ days[1]=29; } drawCalendar(days,first_day); putchar('\n'); break; } else if(n==2){ printf("请输入要查询的年份:"); scanf("%d",&year); if(!isAvailable(year)){ break; } if((year%4==0 && year%100!=0) || year%400==0){ printf("%d是闰年\n",year); } else{ printf("%d是平年\n",year); } putchar('\n'); break; } else if(n==4){ t=0; break; } else{ printf("请输入要查询的年份:"); scanf("%d",&year); if(!isAvailable(year)){ break; } int weak1=0; weak1=weak(year); printf("星期%d",weak1); putchar('\n'); break; } } } return 0; } int isAvailable(int year){ if(year>0){ return 1; } return 0; } void getDay(int year,int first_day[]){ int m=0; int d=1; int w=0; int y=year; for(m=3;m<=12;m++){ w=(d + 1 + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400) % 7; first_day[m]=w; } y-=1; for(m=13;m<=14;m++){ w=(d + 1 + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400) % 7; first_day[m-13]=w; } } void drawCalendar(int days[],int first_day[]){ int space=0; int i=0,d=0,j=0; for(i=0;i<12;i++){ space=first_day[i]; printf(" %2d月日历\n",i+1); printf("|-----------------------------|\n"); printf("| 日 一 二 三 四 五 六 |\n"); printf("|-----------------------------|\n|"); for(j=0;j