注意闰年,是4的倍数,不是100的倍数,但可以是400的倍数

#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;

int DayNum(int Y, int M, int D)
{
    int RunNianFlag = 0;
    //     int BeforeThisMonth=0;
    if ((Y % 100 && !(Y % 4)) || !(Y % 400))
        RunNianFlag = 1;
    int BeforeThisMonth[12] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
    if (M >= 3 && RunNianFlag == 1)
        return BeforeThisMonth[M - 1] + D + 1;
    else
        return BeforeThisMonth[M - 1] + D;
    //     switch(M)
    //     {
    //         case 1:
    //             BeforeThisMonth=0;
    //             break;
    //         case 2:
    //             BeforeThisMonth=31;
    //             break;
    //         case 3:
    //             BeforeThisMonth=31+28;
    //             break;
    //         case 4:
    //             BeforeThisMonth=31+28+31;
    //             break;
    //         case 5:
    //             BeforeThisMonth=90+30;
    //             break;
    //         case 6:
    //             BeforeThisMonth=90+30+31;
    //             break;
    //         case 7:
    //             BeforeThisMonth=90+30+31+30;
    //             break;
    //         case 8:
    //             BeforeThisMonth=181+31;
    //             break;
    //         case 9:
    //             BeforeThisMonth=181+31+31;
    //             break;
    //         case 10:
    //             BeforeThisMonth=181+31+31+30;
    //             break;
    //         case 11:
    //             BeforeThisMonth=273+31;
    //             break;
    //         case 12:
    //             BeforeThisMonth=273+30+31;
    //     }
    //     if(M>=3 && RunNianFlag==1)
    //         BeforeThisMonth++;
    //     return BeforeThisMonth+D;
}

int main()
{
    int Y, M, D;
    while (scanf("%d%d%d", &Y, &M, &D) != EOF)
    // while (cin >> Y >> M >> D)
    {
        cout << DayNum(Y, M, D) << endl;
    }
    return 0;
}