UIT2024_Calendar/stu2024/计科2402吕伟焘.cpp
2024-12-07 16:23:34 +08:00

255 lines
6.7 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>
#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);
}