#include #include //判断读入的n值------------------------------------------------------------------------------------------------------- int durun() { int i; char x; printf("1.查询某年某月是星期几是否为闰年\n2.打印单列日历\n3.打印双列日历\n4.退出程序\n"); scanf(" %c",&x); if(x=='1') x=1; else if(x=='2') x=2; else if(x=='3') x=3; else if(x=='4') x=4; else x=5; return x; } //判断年份------------------------------------------------------------------------------------------------------------- int runian(int x1) { int m=28; if(x1%4==0&&x1%100!=0||x1%400==0) m=29; return m; } int riqi(int x1) { int w,i; if(x1>2000) w=((x1-1)*365+((x1-1)/4)-((x1-1)/100)+((x1-1)/400)+1)%7; else w=(x1/100)/4-2*(x1/100)+x1%100+(x1%100)/4+(13*12/5); w=w%7; if(w==0) w=7; return w; } //主体----------------------------------------------------------------------------------------------------------------- int main() { for(;;) { qaz:; int m[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; int n,year,ri; n=durun(); if(n==5) { system("cls"); printf("输入错误请从新输入\n\n"); goto qaz; } if(n==4) break; //--------------------------------------------------------------------------------------------------------------------------- if(n==1) { system("cls"); zaq:; int xiqi,i; printf("请依次输入年 月 日\n返回上一级请输入-1\n"); scanf("%d",&year); if(year==-1) { system("cls"); goto qaz; } scanf("%d%d",&m[0],&ri); m[2]=runian(year); if(year<=9999&&year>0&&m[0]>=1&&m[0]<=12&&ri>0&&ri<=m[m[0]]) { xiqi=riqi(year); if(year==1582) { if(m[0]==10&&ri>4&&ri<15) { printf("输入错误\n\n"); goto zaq; } if(m[0]>10) m[10]-=10; if(ri>=15&&m[0]==10) xiqi=xiqi-10; } for(i=1; i0) { printf("======================%.4d======================\n\n\n",year); for(i=1; i<=12; i++) { printf("=======================%.2d=======================\n",i); printf("星期一 星期二 星期三 星期四 星期五 星期六 星期日\n"); for(j=1; j7) { printf("\n"); w=1; } } printf("\n\n"); } } else printf("输入错误\n\n"); } //--------------------------------------------------------------------------------------------------------------------------------- if(n==3) { system("cls"); int i,j1,w,w2,year; int x1,x2,x3,x4,x5; printf("请输入年份\n返回上一级请输入-1\n"); scanf("%d",&year); if(year==-1) { system("cls"); goto qaz; } m[2]=runian(year); w=riqi(year); if(year<=9999&&year>0) { printf("===============================================%.4d===============================================\n\n\n",year); for(i=1; i<=12; i=i+2) { x1=1,x3=1,x4=1; printf(" \n"); printf("=======================%.2d======================= ",i); printf("=======================%.2d=======================\n",i+1); printf("星期一 星期二 星期三 星期四 星期五 星期六 星期日 "); printf(" 星期一 星期二 星期三 星期四 星期五 星期六 星期日\n"); w2=(w+m[i])%7; if(w2==0) w2=7; for(j1=1; j17) { if(x1==1) { for(x2=1; x27) { x5=1; printf("\n"); break; } } printf("\n"); w=1; } } if(year==1582&&i==9) m[10]=21; w=(w2+m[i+1])%7; if(w==0) w=7; } } else printf("输入错误\n\n"); } } }