struct date
{
int year;
int month;
int day;
};
int checkyear(int y)
{
if(y%4==0 && y%100!=0 || y%400==0) //是闰年
return 1;
else
return 0;
}
int cal(struct date d1,struct date d2)
{
int i;
int sum=0;
//算差几年
if(d1.year>=d2.year){
for(i=d2.year;i<d1.year ;i++){
if(checkyear(i)==1) sum+=366;
else sum+=365;
}
//算月份,小的年份要减,大的年份要加
for(i=1;i<d1.month;i++){//大的年份要加
if(i==2){
if(checkyear(d1.year)==1) sum+=29;
else sum+=28;
}
else if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10) sum+=31;
else sum+=30;
}
sum+=d1.day;
for(i=1;i<d2.month;i++){//小的年份要减
if(i==2){
if(checkyear(d2.year)==1) sum-=29;
else sum-=28;
}
else if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10) sum-=31;
else sum-=30;
}
sum-=d2.day;
}
else{//d1.year<d2.year
for(i=d1.year;i<d2.year ;i++){
if(checkyear(i)==1) sum+=366;
else sum+=365;
}
//算月份,小的年份要减,大的年份要加
for(i=1;i<d2.month;i++){//大的年份要加
if(i==2){
if(checkyear(d2.year)==1) sum+=29;
else sum+=28;
}
else if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10) sum+=31;
else sum+=30;
}
sum+=d2.day;
for(i=1;i<d1.month;i++){//小的年份要减
if(i==2){
if(checkyear(d1.year)==1) sum-=29;
else sum-=28;
}
else if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10) sum-=31;
else sum-=30;
}
sum-=d1.day;
}
return sum;
}
void main()
{
struct date *d1,*d2;
d1=(struct date*)malloc(sizeof(struct date));
d2=(struct date*)malloc(sizeof(struct date));
int res;
printf("input the first date:");
scanf("%d",&d1->year);
scanf("%d",&d1->month);
scanf("%d",&d1->day);
printf("input the second date:");
scanf("%d%d%d",&d2->year,&d2->month,&d2->day);
res=cal(*d1,*d2);
printf("%d\n",res);
}
{
int year;
int month;
int day;
};
int checkyear(int y)
{
if(y%4==0 && y%100!=0 || y%400==0) //是闰年
return 1;
else
return 0;
}
int cal(struct date d1,struct date d2)
{
int i;
int sum=0;
//算差几年
if(d1.year>=d2.year){
for(i=d2.year;i<d1.year ;i++){
if(checkyear(i)==1) sum+=366;
else sum+=365;
}
//算月份,小的年份要减,大的年份要加
for(i=1;i<d1.month;i++){//大的年份要加
if(i==2){
if(checkyear(d1.year)==1) sum+=29;
else sum+=28;
}
else if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10) sum+=31;
else sum+=30;
}
sum+=d1.day;
for(i=1;i<d2.month;i++){//小的年份要减
if(i==2){
if(checkyear(d2.year)==1) sum-=29;
else sum-=28;
}
else if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10) sum-=31;
else sum-=30;
}
sum-=d2.day;
}
else{//d1.year<d2.year
for(i=d1.year;i<d2.year ;i++){
if(checkyear(i)==1) sum+=366;
else sum+=365;
}
//算月份,小的年份要减,大的年份要加
for(i=1;i<d2.month;i++){//大的年份要加
if(i==2){
if(checkyear(d2.year)==1) sum+=29;
else sum+=28;
}
else if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10) sum+=31;
else sum+=30;
}
sum+=d2.day;
for(i=1;i<d1.month;i++){//小的年份要减
if(i==2){
if(checkyear(d1.year)==1) sum-=29;
else sum-=28;
}
else if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10) sum-=31;
else sum-=30;
}
sum-=d1.day;
}
return sum;
}
void main()
{
struct date *d1,*d2;
d1=(struct date*)malloc(sizeof(struct date));
d2=(struct date*)malloc(sizeof(struct date));
int res;
printf("input the first date:");
scanf("%d",&d1->year);
scanf("%d",&d1->month);
scanf("%d",&d1->day);
printf("input the second date:");
scanf("%d%d%d",&d2->year,&d2->month,&d2->day);
res=cal(*d1,*d2);
printf("%d\n",res);
}