这个怎么写,有没有简单方法

img

#include <stdio.h>
struct date
{int m,d;};

long days(struct date d1,struct date d2)
{
int mon[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};

if(d1.m<=2 && d2.m>2)
    return -1;
long day = 0;
if(d1.m == d2.m)
    day = d2.d - d1.d;
else
{
for(int i=d1.m+1;i<d2.m;i++)
    day += mon[i];
day += mon[d1.m]-d1.d;
day += d2.d;
}

return day;
}


void main()
{struct date d1,d2,d3;
long td;
printf("first date:");
scanf("%d%d",&d1.m,&d1.d);
printf("second date:");
scanf("%d%d",&d2.m,&d2.d);
if((d1.m > d2.m) || (d1.m==d2.m && d1.d>d2.d))
{
    d3 = d1;
    d1 = d2;
    d2 = d3;
}

td=days(d1,d2);
if(td < 0)
    printf("error");
else
    printf("%d",td);
}

由于输入没有年份,所以只要两个日期跨2月份,就应该输出error

没有年,2月是固定28天吧