UIT2024_Calendar/stu2024/软件2403王琬琳.cpp
2024-12-07 16:23:34 +08:00

172 lines
3.8 KiB
C++

#include<stdio.h>
//台历(没有实现双列输出 和 1582年的少十天
void k( int x,int year,int month)
{ int i,day=0,j;
for(i=0;i<year;i++)
if(i%4==0&&i%100!=0||i%400==0)
day=day+366;
else
day=day+365;
for(i=1;i<month;i++)
{ switch(i)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
day=day+31;
break;
case 4: case 6: case 9: case 11:
day=day+30;
break;
case 2:
if(year%4==0&&year%100!=0||year%400==0)
day=day+29;
else
day=day+28;
break;
}}
j=day%7+1;
if(j!=7)
{
for(i=1;i<=j;i++)
printf("\t");
}
for(i=1;i<=x;i++)
{
if(i==(7-j)||(i-(7-j))%7==0)
{
printf("%d\n\n",i);
continue;}
printf("%d\t",i);
}
printf("\n\n");
}
void weed( int month,int year)
{ int i;
char a[7][19]={"","","","","","",""};
printf("--------------------%d年 %d月--------------------\n\n",year,month);
for(i=0;i<7;i++)
printf("%s\t",a[i]);
printf("\n\n");
}
int main()
{
int num,year,month,day;
int a,week;
while(1)
{
printf(" 菜单 \n1.查询年份是否为闰年\n2.查询星期几\n3.展示日历\n0.退出\n");
printf("输入您想应用的功能对应的数字");
scanf("%d",&num);
switch(num)
{
case 0:
printf("感谢使用");
return 0;
case 1:
printf("输入年份");
scanf("%d",&year);
if((year%4==0)&&(year%100!=0)||(year%400==0))
a=0;
else
a=1;
switch(a)
{
case 0:printf("该年为闰年\n");break;
case 1:printf("该年不是闰年\n");break;
}break;
case 2:
printf("输入年份");
scanf("%d",&year);
printf("输入月份");
scanf("%d",&month);
printf("请输入日期");
scanf("%d",&day);
if(month==1||month==2)
{ month=month+=12;
year--;
week=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;
}
else if(month==3||month==4||month==5||month==6||month==7||month==8||month==9||month==10||month==11||month==12)
week=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;
switch(week)
{
case 0:printf("星期一\n");break;
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;
}
break;
case 3:
printf("1.只写了单列排列\n2.只写了单列排列\n");
int year,month=0;
int x;
printf("请输入要查询的年份:");
scanf("%d",&year);
if(year==1582&&month==10&&day>=5&&day<=14)
{
printf("\n");
while(month++<=12)
{
switch(month)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
x=31;
weed(month,year);
k(x,year,month);
break;
case 4: case 6: case 9: case 11:
x=30;
weed(month,year);
k(x,year,month);
break;
case 2:
if(year%4==0&&year%100!=0||year%400==0)
x=29;
else
x=28;
weed(month,year);
k(x,year,month);
}
}
}
else
printf("\n");
while(month++<=12)
{
switch(month)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
x=31;
weed(month,year);
k(x,year,month);
break;
case 4: case 6: case 9: case 11:
x=30;
weed(month,year);
k(x,year,month);
break;
case 2:
if(year%4==0&&year%100!=0||year%400==0)
x=29;
else
x=28;
weed(month,year);
k(x,year,month);
break;
}
}
}
}
}