255 lines
6.7 KiB
C++
255 lines
6.7 KiB
C++
#include<stdio.h>
|
||
#include<math.h>
|
||
#include<stdlib.h>
|
||
|
||
void arr(long long int year,int month,int day)//判断星期几
|
||
{
|
||
int w;
|
||
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n");
|
||
printf(" **************************************\n");
|
||
printf(" * *\n");
|
||
printf(" * *\n");
|
||
printf(" * 欢迎使用万年历!! *\n");
|
||
printf(" * *\n");
|
||
printf(" * *\n");
|
||
printf(" **************************************\n");
|
||
printf(" *请输入所查日期:");
|
||
while(scanf("%lld %d %d",&year,&month,&day)!=EOF)
|
||
{
|
||
int c=year/100;
|
||
int y=year%100;
|
||
if(month<0||month>12||day>31)
|
||
{
|
||
printf(" *请重新输入所查日期:");
|
||
}
|
||
else
|
||
{
|
||
if(year<1582||(year==1582&&month<10)||(year==1582&&month==10&&day<=4))
|
||
{
|
||
|
||
if(month==1||month==2)
|
||
{
|
||
y--;
|
||
month+=12;
|
||
}
|
||
w=(y+y/4+c/4-2*c+(13*(month+1))/5+day+2)%7;
|
||
}
|
||
else
|
||
{
|
||
if(month==1||month==2)
|
||
{
|
||
y--;
|
||
month+=12;
|
||
}
|
||
w=(y+y/4+c/4-2*c+(13*(month+1))/5+day-1)%7;
|
||
|
||
}
|
||
if(year==1582&&month>10)
|
||
{
|
||
w -=3;
|
||
}
|
||
|
||
switch(w)
|
||
{
|
||
case 1:
|
||
printf("星期一\n");break;
|
||
case 2:
|
||
printf("星期二\n");break;
|
||
case 3:
|
||
printf("星期三\n");break;
|
||
case 4:
|
||
printf("星期四\n");break;
|
||
case 5:
|
||
printf("星期五\n");break;
|
||
case 6:
|
||
printf("星期六\n");break;
|
||
case 0:
|
||
printf("星期日\n");
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
return ;
|
||
}
|
||
void add(long long int year)//判断闰年
|
||
{
|
||
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n");
|
||
printf(" **************************************\n");
|
||
printf(" * *\n");
|
||
printf(" * *\n");
|
||
printf(" * 欢迎使用万年历!! *\n");
|
||
printf(" * *\n");
|
||
printf(" * *\n");
|
||
printf(" **************************************\n");
|
||
printf(" *请输入年份:");
|
||
scanf("%lld",&year);
|
||
if((year%4==0&&year%100!=0)||(year%100==0))
|
||
printf(" 闰年");
|
||
else
|
||
printf(" 平年");
|
||
|
||
return ;
|
||
}
|
||
void abb(long long int year,int month,int day)//日历
|
||
{
|
||
|
||
int i,j,n,leap;
|
||
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n");
|
||
printf(" **************************************\n");
|
||
printf(" * *\n");
|
||
printf(" * *\n");
|
||
printf(" * 欢迎使用万年历!! *\n");
|
||
printf(" * *\n");
|
||
printf(" * *\n");
|
||
printf(" **************************************\n");
|
||
printf(" *请输入年份:");
|
||
scanf("%lld",&year);
|
||
printf("\n\n");
|
||
|
||
leap=(year%4==0&&year%100!=0)||(year%100==0);
|
||
|
||
n=((year-1)*365+ (year-1)/4-(year-1)/100+(year-1)/400+1) % 7;
|
||
|
||
for(month=1;month<=12;month++)
|
||
{
|
||
switch(month)
|
||
{
|
||
case 1:
|
||
day=31;
|
||
printf("一月(%d)\t\t%lld\n",month,year);
|
||
break;
|
||
case 2:
|
||
if(leap)
|
||
day=29;
|
||
else
|
||
day=28;
|
||
printf("二月(%d)\t\t%lld\n",month,year);
|
||
break;
|
||
case 3:
|
||
day=31;
|
||
printf("三月(%d)\t\t%lld\n",month,year);
|
||
break;
|
||
case 4:
|
||
day=30;
|
||
printf("四月(%d)\t\t%lld\n",month,year);
|
||
break;
|
||
case 5:
|
||
day=31;
|
||
printf("五月(%d)\t\t%lld\n",month,year);
|
||
break;
|
||
case 6:
|
||
day=30;
|
||
printf("六月(%d)\t\t%lld\n",month,year);
|
||
break;
|
||
case 7:
|
||
day=31;
|
||
printf("七月(%d)\t\t%lld\n",month,year);
|
||
break;
|
||
case 8:
|
||
day=31;
|
||
printf("八月(%d)\t\t%lld\n",month,year);
|
||
break;
|
||
case 9:
|
||
day=30;
|
||
printf("九月(%d)\t\t%lld\n",month,year);
|
||
break;
|
||
case 10:
|
||
day=31;
|
||
printf("十月(%d)\t\t%lld\n",month,year);
|
||
break;
|
||
case 11:
|
||
day=30;
|
||
printf("十一月(%d)\t\t%lld\n",month,year);
|
||
break;
|
||
case 12:
|
||
day=31;
|
||
printf("十二月(%d)\t\t%lld\n",month,year);
|
||
break;
|
||
|
||
}
|
||
printf("----------------------------------------------------\n");
|
||
printf(" SUN MON TUE WED THD FRI SAT\n");
|
||
|
||
switch(n)
|
||
{
|
||
case 1:
|
||
printf("%5c",'\40');
|
||
break;
|
||
case 2:
|
||
printf("%10c",'\40');
|
||
break;
|
||
case 3:
|
||
printf("%15c",'\40');
|
||
break;
|
||
case 4:
|
||
printf("%20c",'\40');
|
||
break;
|
||
case 5:
|
||
printf("%25c",'\40');
|
||
break;
|
||
case 6:
|
||
printf("%30c",'\40');
|
||
break;
|
||
}
|
||
|
||
for(i=1,j=n;i<=day;i++,j++)
|
||
{
|
||
printf("%5d",i);
|
||
|
||
if(j%7==6)
|
||
printf("\n");
|
||
}
|
||
|
||
n=(n+day)%7;
|
||
printf("\n----------------------------------------------------\n");
|
||
}
|
||
|
||
|
||
return ;
|
||
}
|
||
void mean_main(long long int year,int month,int day)//菜单
|
||
{
|
||
int a;
|
||
while(1)
|
||
{
|
||
|
||
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n");
|
||
printf(" **************************************\n");
|
||
printf(" * 欢迎使用万年历!! *\n");
|
||
printf(" * 1.查阅闰年 *\n");
|
||
printf(" * 2.输出日历 *\n");
|
||
printf(" * 3.查询对应的日期 *\n");
|
||
printf(" * 4.退出系统 *\n");
|
||
printf(" **************************************\n");
|
||
printf(" *请输入(1~4):");
|
||
do
|
||
{
|
||
scanf("%d",&a);
|
||
if(a>0&&a<5)
|
||
break;
|
||
else
|
||
printf(" *请重新输入:");
|
||
|
||
}while(1);
|
||
system("cls");
|
||
switch(a)
|
||
{
|
||
case 1:add(year);break;
|
||
case 2:abb(year,month,day);break;
|
||
case 3:arr(year,month,day);break;
|
||
case 4:break;
|
||
}
|
||
}
|
||
|
||
return ;
|
||
}
|
||
int main()
|
||
{
|
||
long long int year;
|
||
int month,day;
|
||
mean_main(year,month,day);
|
||
|
||
}
|
||
|