有人帮我讲一下怎么补充这个fun函数吗

输入的某年某月某日,可判断这一天是这一年的第几天。程序分析:以3月5日为例,应该先把前两个月的天数加起来,然后再上5天即为本年的第几天(特殊情况:闰年月份大于3时需要多加一天)。 不能修改程,补充fun函数。 #include<iostream.h> int fun (int y, int m ,int d) { } void main() { cout<<fun(2005,2,1)<<endl; cout <<fun(2004,1,5)<<endl; cout< <fun(2004,10,12)<<endl; cout<< fun(2005,12,20)<<endl; return; }


int fun (int year, int month ,int day) { 

    for(i=1;i<month;i++)
    {
        if((year%400==0 || (year%4==0&&year%400!=0))&&i==2)//闰年二月多一天
            sum+=29;
        else if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12)
            sum+=31;
        else
            sum+=28;
    }
    sum+=day;
}
    

img

#include
using namespace std;
int fun(int y, int m, int d) {
int sum=d, i=0;
int A[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
if ((0 == y % 4 && y % 100 != 0) || (0 == y % 400))
A[1] = 29;
for (i = m - 2; i >= 0; i--)
sum += A[i];
return sum;
}
void main() {
cout << fun(2005, 2, 1) << endl;
cout << fun(2004, 1, 5) << endl;
cout << fun(2004, 10, 12) << endl;
cout << fun(2005, 12, 20) << endl;
getchar();
return;
}

iostream是不带.h的, 还有main的返回值不能是void


#include <iostream>
#include <time.h>
using namespace std;

int fun(int y, int m, int d)
{
        struct tm tm; 
        tm.tm_year = y - 1900;
        tm.tm_mon = m - 1;
        tm.tm_mday = d;
        tm.tm_hour = 0;
        tm.tm_min = 0;
        tm.tm_sec = 0;
        tm.tm_isdst = 0;
        time_t time = mktime(&tm);
        return tm.tm_yday + 1;
}


int main()
{
        cout << fun(2005, 2, 1) << endl;
        cout << fun(2004, 1, 5) << endl;
        cout << fun(2004, 10, 20) << endl;
        cout << fun(2005, 12, 20) << endl;
    
        return 0;
}