|
|
|
@ -0,0 +1,231 @@
|
|
|
|
|
#include<stdio.h>
|
|
|
|
|
#include<stdlib.h>
|
|
|
|
|
int Year(int A)/*计算输入年份之前一共多少天*/
|
|
|
|
|
{
|
|
|
|
|
int i,day,s=0;
|
|
|
|
|
for(i=1;i<=A-1;i++)
|
|
|
|
|
{
|
|
|
|
|
if( i%4==0 && i%100!=0 || i%400==0 )/*判断是否为闰年*/
|
|
|
|
|
day=366;
|
|
|
|
|
else
|
|
|
|
|
day=365;
|
|
|
|
|
s=s+day;
|
|
|
|
|
}
|
|
|
|
|
return s;
|
|
|
|
|
}
|
|
|
|
|
int Month(int B,int C)/*计算输入月份有多少天*/
|
|
|
|
|
{
|
|
|
|
|
enum monthday{Jan=1,Feb=2,Mar=3,Apr=4,May=5,Jun=6,Jul=7,Aug=8,Sept=9,Nov=11,Oct=10,Dec=12};/*,枚举*/
|
|
|
|
|
switch(C)
|
|
|
|
|
{
|
|
|
|
|
case Jan:
|
|
|
|
|
return 31;
|
|
|
|
|
case Feb:
|
|
|
|
|
if( B%4==0 && B%100!=0 || B%400==0 )
|
|
|
|
|
return 29;
|
|
|
|
|
else
|
|
|
|
|
return 28;
|
|
|
|
|
case Mar:
|
|
|
|
|
return 31;
|
|
|
|
|
case Apr:
|
|
|
|
|
return 30;
|
|
|
|
|
case May:
|
|
|
|
|
return 31;
|
|
|
|
|
case Jun:
|
|
|
|
|
return 30;
|
|
|
|
|
case Jul:
|
|
|
|
|
return 31;
|
|
|
|
|
case Aug:
|
|
|
|
|
return 31;
|
|
|
|
|
case Sept:
|
|
|
|
|
return 30;
|
|
|
|
|
case Oct:
|
|
|
|
|
return 31;
|
|
|
|
|
case Nov:
|
|
|
|
|
return 30;
|
|
|
|
|
case Dec:
|
|
|
|
|
return 31;
|
|
|
|
|
default:
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void Day(int E) /*计算查询天数是周几*/
|
|
|
|
|
{
|
|
|
|
|
switch(E)
|
|
|
|
|
{
|
|
|
|
|
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");break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void Holiday(int F,int G) /*判断是否为公历节日*/
|
|
|
|
|
{
|
|
|
|
|
if( F==1&&G==1||F==5&&G==1||F==10&&G==1||F==3&&G==8||F==3&&G==12||F==5&&G==4||F==6&&G==1||F==7&&G==1||F==8&&G==1||F==9&&G==10)
|
|
|
|
|
printf(" ~~当天是公历节日!~~\n");
|
|
|
|
|
else
|
|
|
|
|
printf(" ~~当天不是公历节日~~\n");
|
|
|
|
|
}
|
|
|
|
|
void main()
|
|
|
|
|
{
|
|
|
|
|
system("color 0E");
|
|
|
|
|
int year,month,day,year1,month1,day1,d,j,Z,d1,d2,D,cha,Z1,hui,gong,s=-1;
|
|
|
|
|
/*d1每月第一天的变量;d2每月的变量;Z表示到目前年份为止总天数;j月份循环变量;d表示每月第一天是周几;D表示这一年的这个月有几天;s代表月份*/
|
|
|
|
|
printf("******************************************************************************\n");/*78个*,由此可知DEVC++一行最多80个字符*/
|
|
|
|
|
printf("* *\n");
|
|
|
|
|
printf("* *\n");
|
|
|
|
|
printf("*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~欢迎您的使用~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\n");
|
|
|
|
|
printf("* *\n");
|
|
|
|
|
printf("* *\n");
|
|
|
|
|
printf("******************************************************************************\n");
|
|
|
|
|
printf("本程序有如下功能:\n\n");
|
|
|
|
|
printf("1.输入一个年份,输出是在屏幕上显示该年的日历。假定输入年份在1940-2040之间。\n\n");
|
|
|
|
|
printf("2.输入年月,输出该月的日历。\n\n") ;
|
|
|
|
|
printf("3.输入年月日,输出距今天还有多少天,星期几,是否是公历节日。\n\n");
|
|
|
|
|
hui=1;
|
|
|
|
|
while(hui==1) //判断用户是否重复使用程序
|
|
|
|
|
{
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
printf("请输入您要使用的功能:");
|
|
|
|
|
scanf ("%d",&gong);
|
|
|
|
|
printf("\n");
|
|
|
|
|
switch(gong)
|
|
|
|
|
{
|
|
|
|
|
case 1:
|
|
|
|
|
{
|
|
|
|
|
printf("输入你所查询的年份:");
|
|
|
|
|
scanf ("%d",&year);
|
|
|
|
|
Z=Year(year); //Z表示到目前年份为止总天数
|
|
|
|
|
for(j=1;j<=12;j++) //循环来显示1~12月天数
|
|
|
|
|
{
|
|
|
|
|
d=Z%7+1; //d表示该年第一天是星期几,余数为7则为星期天
|
|
|
|
|
printf("==================================\n"); //34个‘= ’
|
|
|
|
|
printf (" %d月份\n",j);
|
|
|
|
|
printf ("周日 周一 周二 周三 周四 周五 周六\n");
|
|
|
|
|
if(d<7) //周日放在了首位,不用空格
|
|
|
|
|
for(d1=1;d1<=d;d1++)
|
|
|
|
|
printf(" "); //5个空格
|
|
|
|
|
for(d2=1;d2<=Month(year,j);d2++) //d2表示该月的天数
|
|
|
|
|
{
|
|
|
|
|
printf("%d",d2);
|
|
|
|
|
if(d2<10)
|
|
|
|
|
printf(" "); //4个空格
|
|
|
|
|
else
|
|
|
|
|
printf(" "); //3个空格
|
|
|
|
|
if((d2+d)%7==0 || d2==Month(year,j)) //控制换行
|
|
|
|
|
printf("\n");
|
|
|
|
|
}
|
|
|
|
|
Z=Z+Month(year,j); //输入下一个月日历
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case 2:
|
|
|
|
|
{
|
|
|
|
|
printf("输入所查询的年份:");
|
|
|
|
|
scanf ("%d",&year);
|
|
|
|
|
printf("\n输入所查询的月份:");
|
|
|
|
|
scanf ("%d",&month);
|
|
|
|
|
while(month!=1&&month!=2&&month!=3&&month!=4&&month!=5&&month!=6&&month!=7&&month!=8&&month!=9&&month!=10&&month!=11&&month!=12)
|
|
|
|
|
{
|
|
|
|
|
printf("\n亲,一年只有12个月噢,请输入1~12的整数~\n\n");
|
|
|
|
|
printf ("请重新输入月份:");
|
|
|
|
|
scanf("%d",&month);
|
|
|
|
|
}
|
|
|
|
|
printf("\n");
|
|
|
|
|
Z=Year(year);
|
|
|
|
|
for(j=1;j<=month-1;j++) //计算查询月份之前的总天数
|
|
|
|
|
{
|
|
|
|
|
D=Month(year,j);
|
|
|
|
|
Z=Z+D;
|
|
|
|
|
}
|
|
|
|
|
d=Z%7+1;
|
|
|
|
|
printf("==================================\n\n");
|
|
|
|
|
printf(" %d年\n\n",year);
|
|
|
|
|
printf (" %d月份\n\n",j);
|
|
|
|
|
printf ("周日 周一 周二 周三 周四 周五 周六\n");
|
|
|
|
|
if (d<7)
|
|
|
|
|
for (d1=1;d1<=d;d1++)
|
|
|
|
|
printf(" ");
|
|
|
|
|
for (d2=1;d2<=Month(year,j);d2++)
|
|
|
|
|
{
|
|
|
|
|
printf ("%d",d2);
|
|
|
|
|
if (d2<10)
|
|
|
|
|
printf (" ");
|
|
|
|
|
else
|
|
|
|
|
printf (" ");
|
|
|
|
|
if ((d2+d)%7==0 || d2==Month(year,j))
|
|
|
|
|
printf ("\n");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case 3:
|
|
|
|
|
{
|
|
|
|
|
printf("==================================\n\n");
|
|
|
|
|
printf ("请输入查询年份:");
|
|
|
|
|
scanf ("%d",&year);
|
|
|
|
|
printf ("\n请输入查询月份:");
|
|
|
|
|
scanf ("%d",&month);
|
|
|
|
|
while(month!=1&&month!=2&&month!=3&&month!=4&&month!=5&&month!=6&&month!=7&&month!=8&&month!=9&&month!=10&&month!=11&&month!=12)
|
|
|
|
|
{
|
|
|
|
|
printf("\n亲,一年只有12个月噢,请输入1~12的整数~\n\n");
|
|
|
|
|
printf ("请重新输入月份:");
|
|
|
|
|
scanf("%d",&month);
|
|
|
|
|
}
|
|
|
|
|
printf ("\n请输入查询号数:");
|
|
|
|
|
scanf ("%d",&day);
|
|
|
|
|
printf("\n") ;
|
|
|
|
|
Z=Year(year);
|
|
|
|
|
for(j=1;j<=month-1;j++)
|
|
|
|
|
{
|
|
|
|
|
D=Month(year,j);
|
|
|
|
|
Z=Z+D;
|
|
|
|
|
}
|
|
|
|
|
Z=Z+day;
|
|
|
|
|
printf("----------------------------------\n\n");
|
|
|
|
|
printf("请输入当前年份:");
|
|
|
|
|
scanf ("%d",&year1);
|
|
|
|
|
printf("\n请输入当前月份:");
|
|
|
|
|
while(month!=1&&month!=2&&month!=3&&month!=4&&month!=5&&month!=6&&month!=7&&month!=8&&month!=9&&month!=10&&month!=11&&month!=12)
|
|
|
|
|
{
|
|
|
|
|
printf("\n亲,一年只有12个月噢,请输入1~12的整数~\n\n");
|
|
|
|
|
printf ("请重新输入月份:");
|
|
|
|
|
scanf("%d",&month);
|
|
|
|
|
}
|
|
|
|
|
scanf ("%d",&month1);
|
|
|
|
|
printf("\n请输入当日号数:");
|
|
|
|
|
scanf ("%d",&day1);
|
|
|
|
|
printf("\n==================================\n\n");
|
|
|
|
|
Z1=Year(year1);
|
|
|
|
|
for (j=1;j<=month1-1;j++)
|
|
|
|
|
{
|
|
|
|
|
D=Month(year1,j);
|
|
|
|
|
Z1=Z1+D;
|
|
|
|
|
}
|
|
|
|
|
Z1=Z1+day1;
|
|
|
|
|
cha=Z-Z1;
|
|
|
|
|
printf("输入日期距今还有%d天\n\n",cha);
|
|
|
|
|
d=Z%7;
|
|
|
|
|
Day(d); //计算查询天是星期几
|
|
|
|
|
printf("\n");
|
|
|
|
|
Holiday(month,day) ;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
default:
|
|
|
|
|
{
|
|
|
|
|
printf("亲,没有此功能噢!\n\n");
|
|
|
|
|
printf("请您重新输入所选择的功能!\n\n") ;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}while(gong!=1&&gong!=2&&gong!=3);
|
|
|
|
|
printf("\n");
|
|
|
|
|
printf("继续使用,请按1;\n\n退出程序,请按2。\n\n请输入您的选择:");
|
|
|
|
|
scanf("%d",&hui);
|
|
|
|
|
printf("\n");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|