#include char *mmmm[13]={" ","January","February","March","April","May","June","July","August","September","October","November","December"}; int xingqi(int year,int month) { if (month==1||month==2) { month=month+12; year=year-1; } int a=year%100; int b=year/100; int day=1; int h=(day+13*(month+1)/5+a+a/4+b/4+5*b)%7; int d=(h+6)%7; return d; } int xingqi2(int year,int month,int d) { if (month==1||month==2) { month=month+12; year=year-1; } int c=year/100; int y=year%100; int a=(c/4-2*c+y+y/4+13*(month+1)/5+d-1)%7; if(a==0) a=7; return a; } int main(void) { int s; do{ int qwe; printf("*********************************************************\n"); printf("菜单:\n"); printf("功能1:查询对应年份的日历\n"); printf("功能2:查询对应日期的星期\n"); printf("功能3:查询对应年份是否为闰年\n"); printf("功能4:查询输入的月份用英语怎么表达\n"); printf("*********************************************************"); printf("\n\n"); while(2) { printf("你想进行的功能编号为:\n"); scanf("%d",&qwe); if(qwe>0&&qwe<5) break; else printf("暂未开发到该功能 请重新输入\n\n"); } if(qwe==1) { int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int n[13]={0,1,2,3,4,5,6,7,8,9,10,11,12}; int year,a,b,c; while(2) { printf("请输入你想查询的年份:\n"); scanf("%d",&year); if(year>0) break; else printf("输入错误 请重新输入\n"); } if(year%4==0&&year%100!=0||year%400==0) m[2]=29; if(year==1582) m[10]=21; a=year/100; b=year%100; int ds; while(2) { printf("单行输出按1\n双行输出按2\n"); scanf("%d",&ds); if(ds==1||ds==2) break; else printf("输错了 请重新输入\n"); } if(year!=1582) { if(ds==2) { for(int nn=1;nn<13;nn=nn+2) { int day1=1,day2=1; int ll; int c,d,e,f,g; c=xingqi(year,nn); d=xingqi(year,nn+1); f=(m[nn]+c-1)/7+1; g=(m[nn+1]+d-1)/7+1; if(f>g) e=f; else e=g; printf("日 一 二 三 四 五 六 日 一 二 三 四 五 六\n"); printf("%d月 %d月\n",n[nn],n[nn+1]); for(ll=0;llg) e=f; else e=g; printf("日 一 二 三 四 五 六 日 一 二 三 四 五 六\n"); printf("%d月 %d月\n",n[nn],n[nn+1]); if(nn!=11) { for(ll=0;ll4) { printf("%2d ",day2+10); day2++; } else printf(" "); } } printf("\n"); } } if(nn==11) { f=(m[nn]+c+4-1)/7+1; g=(m[nn+1]+d+4-1)/7+1; if(f>g) e=f; else e=g; for(ll=0;ll4) { printf("%2d ",day2+10); day2++; } else printf(" "); } } printf("\n"); } } } printf("\n"); } else { if(year!=1582) { for(int nn=1;nn<13;nn++){ printf("日 一 二 三 四 五 六\n"); printf("%d月\n",n[nn]); c=xingqi(year,nn); for(int aa=0;aa0) break; else printf("请输入公元后年份\n\n"); } int c; while(2) { printf("你想查询的月份为:\n"); scanf("%2d",&c); while(getchar()!='\n'); if(c>0&&c<13) break; else printf("请输入正确月份\n\n"); } int d; while(2) { printf("你想查询的号数为:\n"); scanf("%2d",&d); while(getchar()!='\n'); if(year!=1582) { if(c==2) { if(year%4==0&&year%100!=0||year%400==0) { if(d>0&&d<30) break; else printf("请输入正确号数\n\n"); } else { if(d>0&&d<29) break; else printf("请输入正确号数\n\n"); } } else if(c==1||c==3||c==5||c==7||c==8||c==10||c==12) { if(d>0&&d<32) break; else printf("请输入正确号数\n\n"); } else if(d>0&&d<31) break; else printf("请输入正确号数\n\n"); } if(year==1582) { if(c==2) { if(year%4==0&&year%100!=0||year%400==0) { if(d>0&&d<30) break; else printf("请输入正确号数\n\n"); } else { if(d>0&&d<29) break; else printf("请输入正确号数\n\n"); } } else if(c==1||c==3||c==5||c==7||c==8||c==12) { if(d>0&&d<32) break; else printf("请输入正确号数\n\n"); } else if(c==10) { if(d>0&&d<5||d>14&&d<32) break; else printf("请输入正确号数\n\n"); } else if(d>0&&d<31) break; else printf("请输入正确号数\n\n"); } } int e; e=xingqi2(year,c,d); if(e==0) e==7; if(year!=1582){ printf("你查询的日期为星期%d\n",e); } else { if(c!=10&&c!=11&&c!=12) printf("你查询的日期为星期%d\n",e); else if(c==10) { if(d<5) printf("你查询的日期为星期%d\n",e); else printf("你查询的日期为星期%d\n",e-3); } else if(c==11) { int e; e=xingqi2(year,c,d)+4; if(e==0) e=7; if(e==8) e=1; if(e==9) e=2; if(e==10) e=3; if(e==11) e=4; printf("你查询的日期为星期%d\n",e); } else { int e; e=xingqi2(year,c,d)-3; if(e==-1) e=6; if(e==-2) e=5; if(e==0) e=7; printf("你查询的日期为星期%d\n",e); } } } else if(qwe==3) { int year; while(2) { printf("请输入想要查询的年份:\n"); scanf("%d",&year); if(year>0) break; else printf("请输入公元后年份\n\n"); } if(year%4==0&&year%100!=0||year%400==0) printf("%d是闰年",year); else printf("%d不是闰年",year); } else { int yuefen; do{ printf("请输入想查询的月份,用阿拉伯数字:\n"); scanf("%d",&yuefen); }while(yuefen<1||yuefen>12); printf("%d用英语表示为 %s\n",yuefen,mmmm[yuefen]); } printf("是否继续程序?\n 继续程序请按1 结束程序请按除1外任意阿拉伯数字\n"); scanf("%d",&s); }while(s==1); return 0; }