193 lines
4.7 KiB
C
193 lines
4.7 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
//判断读入的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; i<m[0]; i++)
|
|
xiqi+=m[i];
|
|
xiqi+=ri;
|
|
xiqi=(xiqi-1)%7;
|
|
if(xiqi==0)
|
|
xiqi=7;
|
|
printf("%d年%d月%d日是星期%d",year,m[0],ri,xiqi);
|
|
if(m[2]==29)
|
|
printf("是闰年\n\n");
|
|
else printf("不是闰年\n\n");
|
|
} else printf("输入错误\n\n");
|
|
}
|
|
//--------------------------------------------------------------------------------------------------------------------------------------------
|
|
if(n==2) {
|
|
system("cls");
|
|
int i,j,w,year;
|
|
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++) {
|
|
printf("=======================%.2d=======================\n",i);
|
|
printf("星期一 星期二 星期三 星期四 星期五 星期六 星期日\n");
|
|
for(j=1; j<w; j++)
|
|
printf(" ");
|
|
for(j=1; j<=m[i]; j++) {
|
|
if(year==1582&&i==10) {
|
|
if(j==5)
|
|
j=15;
|
|
}
|
|
printf(" %.2d ",j);
|
|
w++;
|
|
if(w>7) {
|
|
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; j1<w; j1++)
|
|
printf(" ");
|
|
for(j1=1; j1<=38; j1++) {
|
|
if(j1<=m[i])
|
|
printf(" %.2d ",j1);
|
|
else if(x4==m[i+1])
|
|
break;
|
|
else printf(" ");
|
|
w++;
|
|
if(w>7) {
|
|
if(x1==1) {
|
|
for(x2=1; x2<w2; x2++)
|
|
printf(" ");
|
|
x1=0;
|
|
x5=w2;
|
|
}
|
|
for(x3; x3<=m[i+1]; x3++) {
|
|
if(x4<=m[i+1]) {
|
|
if(year==1582&&i==9&&x4==5) {
|
|
x4=15;
|
|
}
|
|
printf(" %.2d ",x4);
|
|
x4++;
|
|
}
|
|
x5++;
|
|
if(x5>7) {
|
|
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");
|
|
}
|
|
}
|
|
}
|