UIT2024_Calendar/stu2024/软件2404李建瑞 第二次.cpp
2024-12-07 16:23:34 +08:00

566 lines
9.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;
}