172 lines
3.8 KiB
C++
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;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
}
|