输入两个日期(年 月 日),求两个日期之间相隔的天数

来源:互联网 发布:淘宝交易平台 编辑:程序博客网 时间:2024/06/09 17:43

在VC++6.0和Dev-C++中运行正确,没有提交

#include<stdio.h>
int run(int year)//判断闰年的函数
{
 int x;
 if(year%400==0||(year%4==0&&year%100!=0))
  x=1;
 else
  x=0;
 return x;
}
int dijitian(int year,int month,int day) //求解某一日期是当年的第几天的函数
{
 int s=0,j,i;
 for(i=1;i<month;i++)
 {
  if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
   s=s+31;
  else if(i==4||i==6||i==9||i==11)
   s=s+30;
  else if(i==2)
  {
   if(run(year))
    s=s+29;
   else
    s=s+28;
  }
 }
 s=s+day;
 return s;
}
void swap(int *a,int *b)//交换两个变量的值的函数
{
 int e;
 e=*a;
 *a=*b;
 *b=e;
}
int main()
{
 int year1,month1,day1;
 int year2,month2,day2;
 int c1,c2,d,a,b,c,i,n;
 scanf("%d",&n);
 while(n--){
 scanf("%d%d%d",&year1,&month1,&day1);
 scanf("%d%d%d",&year2,&month2,&day2);
 if(year1==year2){
  c1=dijitian(year1,month1,day1);
  c2=dijitian(year2,month2,day2);
  d=c1-c2;
  if(d<0)
   d=0-d;
 }
 else
 {
  if(year1>year2)
  {
   swap(&year1,&year2);
   swap(&month1,&month2);
   swap(&day1,&day2);
  }
  if(run(year1))
   a=366-dijitian(year1,month1,day1);
  else
   a=365-dijitian(year2,month2,day2);
  b=0;
  for(i=year1+1;i<year2;i++)
  {
   if(run(i))
    b=b+366;
   else
    b=b+365;
  }
  c=dijitian(year2,month2,day2);
  d=a+b+c;
 }
 printf("%d\n",d);
 }
 return 0;
}