閏年を計算し、年と月によって日数を返す(3つの方法)


ノートシリーズをめくって以前のノートを见ると、私は以前にもこれを知っていたような気がします...

うるう年を計算する

int year;
scanf("%d",&year);
bool bFlag = year%(year%100?4:400)?false:trueiftrue == bFlag)
{
     // 
}
else
{
     // 
}

年と月による戻り日数


方法1:推奨
// :
#define MONTH 12
int GetDaysCount(const int year, const int month)
{
    char days[MONTH] = {31,28,31,30,31,30,31,31,30,31,30,31};
    if (month == 2)
    {
        bool bFlag = year%(year%100?4:400)?false:true;
        if ( bFlag == 1)  //29
        {
            days[1] = 29;
        }
    }
    return days[month-1];
}

方法2:
///////////// ////////////////////
    int  a ;
    int year = 2016;
    scanf("%d",&a);
    // 2 
    if (a ==  2 ) 
    {
        bool bfalg = year%(year%100?4:400)?false:true;
        if (bfalg)
        {
            printf("29
"
); } else { printf("28
"
); } } else { bool bfalg = (a%2)?(a<8):(a>=8); if (bfalg) { printf("31
"
); } else { printf("30
"
); } }

方法3:推奨
// 3: 
    int days;
    switch (a)
    {
    case 2:
        {
            bool bfalg = year%(year%100?4:400)?false:true;
            if (bfalg)
            {
                days = 29;
            }
            else
            {
                days = 28;
            }
            break;
        }
    case 4:
    case 6:
    case 9:
    case 11:
        days = 30;
        break;
    default:     //1,3,5,7,8,10,12
        days = 31;
        break;
    }
/////////////////////////////////