计算闰年, 根据年份和月份返回天数(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;
    }
/////////////////////////////////
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值