两个日期相差天数(不知道哪错了,能不能帮我看看)

#include<stdio.h>

int main()
{int y1,m1,d1,y2,m2,d2,a=0,b,t,f1=0,f2=0,f3=0;
scanf("%d-%d-%d %d-%d-%d",&y1,&m1,&d1,&y2,&m2,&d2);
if(y2-y1==1)f3=1;
if((y1%4==0&&y1%100!=0)||y1%400==0)
f1=1;
for(;y1<y2;y1++){
if((y1%4==0&&y1%100!=0)||y1%400==0){
a+=366;
}else a+=365;
}
if((y1%4==0&&y1%100!=0)||y1%400==0)
f2=1;
if(m1>m2){
t=m1;
m1=m2;
m2=t;
b=-1;
}else b=1;
for(;m1<m2;m1++){
switch(m1){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:a+=31b;
break;
case 4:
case 6:
case 9:
case 11:a+=30
b;
break;
case 2:if(f2==1){
a+=29b;
}else a+=28
b;
break;
}
}
a+=d2-d1;
if(f1==1&&f2==0&&f3==1)a-=1;
if(f1==0&&f2==1&&f3==1)a+=1;

printf("%d",a);
return 0;

}

#include<stdio.h>

int main()
{int y1,m1,d1,y2,m2,d2,a=0,s,i,s1,s2;
scanf("%d-%d-%d %d-%d-%d",&y1,&m1,&d1,&y2,&m2,&d2);
int n=y1;
for(;y1<y2;y1++){
if((y1%4==0&&y1%100!=0)||y1%400==0){
a+=366;
}else a+=365;
}
for(i=1,s=0;i<m1;i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:s+=31;
break;
case 4:
case 6:
case 9:
case 11:s+=30;
break;
case 2:if((n%4==0&&n%100!=0)||n%400==0){
s+=29;
}else s+=28;
break;
}
}
s1=s+d1;
for(i=1,s=0;i<m2;i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:s+=31;
break;
case 4:
case 6:
case 9:
case 11:s+=30;
break;
case 2:if((y2%4==0&&y2%100!=0)||y2%400==0){
s+=29;
}else s+=28;
break;
}
}
s2=s+d2;
a+=s2-s1;
printf("%d",a);
return 0;
}

参考一下这个,是输入月份和日期,计算日期查

#include<stdio.h>
#include<math.h>
int main() {
    int m1,d1,m2,d2,i,s=0,t;
    scanf("%d%d%d%d",&m1,&d1,&m2,&d2);
    if(m1>m2){
        t=m1;m1=m2;m2=t;
        t=d1;d1=d2;d2=t;
    }
    i=m1;
    while(i<m2){
        if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
            s+=31-d1;
            d1=0;
        }else if(i==4||i==6||i==9||i==11){
            s+=30-d1;
            d1=0;
        }else if(i==2){
             if(d1==29){
                 s+=29-d1;
                 d1=0;
             }else{
                 printf("error");
                 return 0;
             }
        }
        i++;
    } 
    s=s+(d2-d1);
    printf("%d",s); 
    return 0;
}