161 lines
3.4 KiB
C++
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");
|
|
}
|
|
}
|