编写一函数,利用结构体变量计算某日是改年的第几天,代码错了,但我不知道该怎么修改

#include<stdio.h>
struct
{
    int year;
    int month;
    int day;
}date;
int main()
{
    int days(struct date);
    int n;
    printf("输入年 月 日\n");
    scanf("%d %d %d",&date.year,&date.month,&date.day);
    n=days(date);
    printf("该日是本年第%d天\n",n);
    return 0;
}
int days(struct date)
{
    int m,i;
    int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    m=0;
    if((date.year%4==0&&date.year%100!=0)||(date.year%400==0))
    {
        for(i=0;i<date.month-1;i++)
            m=m+b[i];
    }
    else
    {
        for(i=0;i<date.month-1;i++)
            m=m+a[i];
    }
    m=m+date.day;
    return (m);
}

date是全局变量,不用传给函数


#include<stdio.h>
struct date
{
    int year;
    int month;
    int day;
}date;
int main()
{
    int days();
    int n;
    printf("输入年 月 日\n");
    scanf_s("%d %d %d", &date.year, &date.month, &date.day);
    n = days();
    printf("该日是本年第%d天\n", n);
    return 0;
}
int days()
{
    int m, i;
    int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    int b[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
    m = 0;
    if ((date.year % 4 == 0 && date.year % 100 != 0) || (date.year % 400 == 0))
    {
        for (i = 0; i < date.month - 1; i++)
            m = m + b[i];
    }
    else
    {
        for (i = 0; i < date.month - 1; i++)
            m = m + a[i];
    }
    m = m + date.day;
    return (m);
}