UIT2024_Calendar/stu2024/虚拟2401房靖皓.cpp
2024-12-07 16:23:34 +08:00

161 lines
3.4 KiB
C++

#include <stdio.h>
int main(){
int n;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(;;){
printf("1.查询星期\n2.打印日历\n输入需要的序号\n");
scanf("%d",&n);
if(n==1)
{
int year,a=0,b,i,j;
printf("输入年份 月份 日期\n");
scanf("%d",&year);
if(year%4==0&&year%100!=0||year%400==0)
m[2]=29;
scanf("%d",&m[0]);
scanf("%d",&b);
if(year==1582&&m[0]==10&&b>4&&b<15)
printf("输入错误\n");
else if(year<0||m[0]<0||m[0]>12||b<0||b>31){
printf("输入错误\n");
}else if(m[2]==28&&b>28||m[2]==29&&b>29)
printf("输入错误\n");
else if((m[0]==1||m[0]==3||m[0]==5||m[0]==7||m[0]==8||m[0]==10||m[0]==12)&&b==31)
printf("输入错误\n");
else {
j=b;
if(year==1582){
m[10]-=10;
if(b>=15)
b-=10;
}
if(year>=2000)
a=((year-1)*365+((year-1)/4)-((year-1)/100)+((year-1)/400)+1)%7;
else a=(year/100)/4-2*(year/100)+year%100+(year%100)/4+(13*12/5);
for(i=1;i<m[0];i++){
b+=m[i];
}
a+=b-1;
a=a%7;
if(a==0)
a=7;
if(year==1582){
if(b>=15)
b-=10;
}
printf("%d年%d月%d日是星期%d\n",year,m[0],j,a);
if(m[2]==29)
printf("%d年是闰年\n",year);
else printf("%d年不是闰年\n",year);
}
}else
if(n==2)
{
int year,a=0,i,j,b,f;
printf("输入年份\n");
scanf("%d",&year);
if(year<0)
printf("输入错误\n");
else {
printf("1.1*12输出\n2.2*6输出\n输入需要的序号\n");
scanf("%d",&n);
if(year%4==0&&year%100!=0||year%400==0)
m[2]=29;
if(year>=2000)
a=((year-1)*365+((year-1)/4)-((year-1)/100)+((year-1)/400)+1)%7;
else a=((year-1)*365+((year-1)/4)-((year-1)/100)+((year-1)/400)+1)%7;
if(a==0)
a=7;
if(n==1)
{
printf("~~~~~~~~~~~~~~~~~~~~~~%.4d~~~~~~~~~~~~~~~~~~~~~~\n\n\n",year);
for(i=1;i<=12;i++){
printf("~~~~~~~~~~~~~~~~~~~~~~~%.2d~~~~~~~~~~~~~~~~~~~~~~~\n",i);
printf("星期一 星期二 星期三 星期四 星期五 星期六 星期日\n");
for(b=1;b<a;b++)
printf(" ");
for(j=1;j<=m[i];j++){
if(year==1582&&i==10){
if(j==5)
j=15;
}
printf(" %.2d ",j);
a++;
if(a>7){
printf("\n");
a=1;
}
}printf("\n");
}
}else
if(n==2){
int x1,x2,x3,x4;
printf("===============================================%.4d===============================================\n\n\n",year);
for(i=1;i<=12;i+=2){
x2=1,x3=1;
printf("~~~~~~~~~~~~~~~~~~~~~~~%.2d~~~~~~~~~~~~~~~~~~~~~~~ ",i);
printf("~~~~~~~~~~~~~~~~~~~~~~~%.2d~~~~~~~~~~~~~~~~~~~~~~~\n",i+1);
printf("星期一 星期二 星期三 星期四 星期五 星期六 星期日 ");
printf("星期一 星期二 星期三 星期四 星期五 星期六 星期日\n");
for(b=1;b<a;b++)
printf(" ");
f=(a+m[i])%7;
if(f==0)
f=7;
x1=1;
for(j=1;j<=40;j++){
if(j<=m[i])
printf(" %.2d ",j);
else if(x3>m[i+1]){
break;
}else printf(" ");
a++;
if(a>7){
if(x1==1){
for(b=1;b<f;b++)
printf(" ");
x1=0;
x2=f,x4=f;
}
for(x2;x2<=38;x2++){
if(year==1582&&(i+1)==10){
if(x3==5)
x3=15;
}
if(x3<=m[i+1]){
printf(" %.2d ",x3);
x3++;
}
x4++;
if(x4>7){
printf("\n");
a=1;
x2++;
x4=1;
break;
}
}
}
}
if(year==1582&&(i+1)==10){
m[10]-=10;
}
a=((year-1)*365+((year-1)/4)-((year-1)/100)+((year-1)/400)+1)%7;
int x5;
for(x5=1;x5<=i+1;x5++)
a+=m[x5];
a=a%7;
if(a==0)
a=7;
printf("\n");
}
}else{
printf("输入错误\n");
return 0;
}
}
}else printf("输入错误\n");
}
}