输入的一个日期包含年月日三个整型数字,要与系统时间比较,首先就要获取同样格式的系统时间。使用中的函数可以做到这一点。
之后就是比较两个日期的大小来判断早晚的关系。年月日依次比较大小即可。
至于具体的日期间隔,只要加上计算年份天数和通过switch语句来选择月份即可,详细还是看代码吧。
#include
#include
#include
#include
void main()
{
char *day[]={"日","一","二","三","四","五","六"};
int a,b,c,d,e,f,m,sum,sume,t,x,y;
int w;
int wday(int x);
time_t timep;
struct tm *p;
time(&timep);
p=gmtime(&timep);
//——————分割线————————————————
loop:printf("输入日期(格式2014 12 15):");
while(scanf("%d %d %d",&a,&b,&c))
{
sum=0;sume=0;m=1;
d=(1900 p->tm_year);e=(1 p->tm_mon);f=p->tm_mday;
w=p->tm_wday;
if(a==d&&b==e&&c==f||c>31||c29)
{
printf("呵呵
");
getch();
system("CLS");
goto loop;
}
else if((b==2)&&(a%4!=0||a0==0&&a@0!=0)&&c>28)
{
printf("呵呵
");
getch();
system("CLS");
goto loop;
}
else
{
while(a>d||a==d&&b>e||a==d&&b==e&&c>f)
{
t=a;a=d;d=t;
t=b;b=e;e=t;
t=c;c=f;f=t;
m=-1;
}
switch(b)
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("呵呵
");
getch();
system("CLS");
goto loop;
}
sum =c;
sum=365-sum;
if(a@0==0||a%4==0&&a0!=0&&b2)
sume ;
//——————————分割线又来了————
y=d-a-1;
if((a 1)@0==0||(a 1)%4==0&&(a 1)0!=0)
x=365*y (y 3)/4;
else if((a 2)@0==0||(a 2)%4==0&&(a 2)0!=0)
x=365*y (y 2)/4;
else if((a 3)@0==0||(a 3)%4==0&&(a 3)0!=0)
x=365*y (y 1)/4;
else if(a@0==0||a%4==0&&a0!=0)
x=365*y y/4;
x=x sum sume;
if(m==1)
{
printf("距今%d天
",x);
printf("星期%s
",day[wday(w-x)]);
}
else
{
printf("还有%d天
",x);
printf("星期%s
",day[wday(w x)]);
}
getch();
system("CLS");
goto loop;
}
}
}
int wday(int x)
{
x=x%7;
(x。
全部