1. 程式人生 > >計算閏年, 根據年份和月份返回天數(3種方法)

計算閏年, 根據年份和月份返回天數(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\n"); } else { printf("28\n"); } } else { bool bfalg = (a%2)?(a<8):(a>=8); if (bfalg) { printf("31\n"
); } else { printf("30\n"); } }

方法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;
    }
/////////////////////////////////