#include #include int fangbao() { int i; char x; printf("1.查询日期所对应的星期\n2.查询该年份日历并竖向输出\n3.查询该年份日历并以2*6格式输出\n4.查询该年是否为闰年\n5.退出程序\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 if(x='5') x=5; else x=6; return x; } int runnian(int year,int month) { int md[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if((year%4==0&&year%100!=0||year%400==0)&&month==2) return 29; else return md[month]; } int date(int year,int month,int day) { int c; if(month<3) { month+=12; year--; } if(year!=1582) { int a,b; a=year/100; b=year%100; c=(a/4-2*a+b+b/4+13*(month+1)/5+day-1)%7; if(c<0) c+=7; } else if(year==1582&&month<=10&&day<=4) c=(day+1+2*month+3*(month+1)/5+year+year/4+5)%7; else if(year==1582&&month>=10&&day>=15) c=(day+1+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7; return c; } void yeartb(int year,int month) { int h,j,i; h=runnian(1582,month); j=date(1582,month,1); for(i=0;i=5&&(i-10+j)%7==0) printf("\n"); else if(month!=10&&(i+j)%7==0) printf("\n"); } printf("\n"); } void monthtwo(int year, int month) { int w,k,e; w=runnian(year,month); k=date(year,month,1); for(e=0;e12||(month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day>31||(month==4||month==6||month==9||month==11)&&day>30) printf("输入错误\n"); if((year%4==0&&year%100!=0||year%400==0)&&month==2&&day>29||(year%4!=0&&year%100==0||year%400!=0)&&day>28) printf("输入错误\n"); if(year==1582) { if(month==10&&day>4&&day<15) printf("输入错误\n\n"); } m=date(year,month,day); if(m==0) printf("该日期为星期日\n"); else printf("该日期为星期%d\n",m); } if(d==2) { int f,g; printf("请输入年份:\n"); scanf("%d",&year); if(year<0) printf("输入错误\n"); printf("%4d年的日历为:\n",year); for(month=1;month<=12;month++) { printf("%d月\n",month); printf(" 日 一 二 三 四 五 六\n"); if(year!=1582) monthtwo(year,month); else yeartb(year,month); if(month!=12) printf("\n"); } } if(d==3) { printf("请输入年份:\n"); scanf("%d",&year); if(year<0) printf("输入错误\n"); printf("%4d年的日历为:\n",year); for(month=1;month<=12;month+=2) { printf("%d月",month); printf("%d月\n",month+1); printf(" 日 一 二 三 四 五 六"); printf(" 日 一 二 三 四 五 六\n"); monthtwo(year,month); } } if(d==4) { int year; printf("请输入年份:\n"); scanf("%d",&year); if(year<0) printf("输入错误\n"); if(year%4==0&&year%100!=0||year%400==0) printf("该年份为闰年\n"); else printf("该年份不是闰年\n"); } } return 0; }