566 lines
9.5 KiB
C++
566 lines
9.5 KiB
C++
#include<stdio.h>
|
||
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;ll<e;ll++)
|
||
{
|
||
for(int i=0;i<7;i++)
|
||
{
|
||
if(ll==0&&i<c)
|
||
printf(" ");
|
||
else if(day1<=m[nn])
|
||
printf("%2d ",day1++);
|
||
else
|
||
printf(" ");
|
||
}
|
||
printf(" ");
|
||
|
||
|
||
for(int i=0;i<7;i++)
|
||
{
|
||
if(ll==0&&i<d)
|
||
printf(" ");
|
||
else if(day2<=m[nn+1])
|
||
printf("%2d ",day2++);
|
||
else
|
||
printf(" ");
|
||
}
|
||
printf("\n");
|
||
}
|
||
}
|
||
printf("\n");
|
||
}
|
||
else
|
||
{
|
||
for(int nn=1;nn<13;nn++){
|
||
printf("日 一 二 三 四 五 六\n");
|
||
printf("%d月\n",n[nn]);
|
||
c=xingqi(year,nn);
|
||
for(int aa=0;aa<c;aa++)
|
||
printf(" ");
|
||
for(int day=1;day<=m[nn];day++)
|
||
{
|
||
printf("%2d ", day);
|
||
if ((c+day)%7==0)
|
||
printf("\n");
|
||
}
|
||
printf("\n");
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
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]);
|
||
if(nn!=11)
|
||
{
|
||
for(ll=0;ll<e;ll++)
|
||
{
|
||
for(int i=0;i<7;i++)
|
||
{
|
||
if(ll==0&&i<c)
|
||
printf(" ");
|
||
else if(day1<=m[nn])
|
||
printf("%2d ",day1++);
|
||
else
|
||
printf(" ");
|
||
}
|
||
printf(" ");
|
||
|
||
|
||
for(int i=0;i<7;i++)
|
||
{
|
||
if(nn!=9)
|
||
{
|
||
if(ll==0&&i<d)
|
||
printf(" ");
|
||
else if(day2<=m[nn+1])
|
||
printf("%2d ",day2++);
|
||
else
|
||
printf(" ");
|
||
}
|
||
else
|
||
{
|
||
if(ll==0&&i<d)
|
||
printf(" ");
|
||
else if(day2<=4)
|
||
printf("%2d ",day2++);
|
||
else if(day2<=m[nn+1]&&day2>4)
|
||
{
|
||
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;ll<e;ll++)
|
||
{
|
||
for(int i=0;i<7;i++)
|
||
{
|
||
if(ll==0&&i<c+4)
|
||
printf(" ");
|
||
else if(day1<=m[nn])
|
||
printf("%2d ",day1++);
|
||
else
|
||
printf(" ");
|
||
}
|
||
printf(" ");
|
||
|
||
|
||
for(int i=0;i<7;i++)
|
||
{
|
||
if(nn!=9)
|
||
{
|
||
if(ll==0&&i<d-3)
|
||
printf(" ");
|
||
else if(day2<=m[nn+1])
|
||
printf("%2d ",day2++);
|
||
else
|
||
printf(" ");
|
||
}
|
||
else
|
||
{
|
||
if(ll==0&&i<d+4)
|
||
printf(" ");
|
||
else if(day2<=4)
|
||
printf("%2d ",day2++);
|
||
else if(day2<=m[nn+1]&&day2>4)
|
||
{
|
||
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;aa<c;aa++)
|
||
printf(" ");
|
||
for(int day=1;day<=m[nn];day++)
|
||
{
|
||
printf("%2d ", day);
|
||
if ((c+day)%7==0)
|
||
printf("\n");
|
||
}
|
||
printf("\n");
|
||
}
|
||
}
|
||
|
||
else
|
||
{
|
||
for(int nn=1;nn<13;nn++){
|
||
if(nn!=11&&nn!=12){
|
||
printf("日 一 二 三 四 五 六\n");
|
||
printf("%d月\n",n[nn]);
|
||
c=xingqi(year,nn);
|
||
for(int aa=0;aa<c;aa++)
|
||
printf(" ");
|
||
for(int day=1;day<=m[nn];day++)
|
||
{
|
||
if(nn!=10){
|
||
printf("%2d ", day);
|
||
if ((c+day)%7==0)
|
||
printf("\n");
|
||
}
|
||
|
||
else{
|
||
if(day<=4){
|
||
printf("%2d ", day);
|
||
if ((c+day)%7==0)
|
||
printf("\n");
|
||
}
|
||
|
||
else{
|
||
printf("%2d ", day+10);
|
||
if ((c+day)%7==0)
|
||
printf("\n");
|
||
}
|
||
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
else if(nn==11){
|
||
printf("日 一 二 三 四 五 六\n");
|
||
printf("%d月\n",n[nn]);
|
||
c=xingqi(year,nn)+4;
|
||
for(int aa=0;aa<c;aa++)
|
||
printf(" ");
|
||
for(int day=1;day<=m[nn];day++)
|
||
{
|
||
printf("%2d ", day);
|
||
if ((c+day)%7==0)
|
||
printf("\n");
|
||
}
|
||
}
|
||
|
||
else{
|
||
printf("日 一 二 三 四 五 六\n");
|
||
printf("%d月\n",n[nn]);
|
||
c=xingqi(year,nn)-3;
|
||
for(int aa=0;aa<c;aa++)
|
||
printf(" ");
|
||
for(int day=1;day<=m[nn];day++)
|
||
{
|
||
printf("%2d ", day);
|
||
if ((c+day)%7==0)
|
||
printf("\n");
|
||
}
|
||
}
|
||
|
||
printf("\n");
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
else if(qwe==2)
|
||
{
|
||
int year;
|
||
while(2)
|
||
{
|
||
printf("你想查询的年份为:\n");
|
||
scanf("%4d",&year);
|
||
while(getchar()!='\n');
|
||
if(year>0)
|
||
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;
|
||
}
|