判断年份是否闰年,最笨的方法

#include

/*
* 公元1582年前,能被4整除的年份;
* 公元1582年后,世纪年中能被400整除的,和非世纪年中能被4整除的年份。
* 对于特别大的年份(暂时定大于172800),这年如果能被3200整除,并且能被172800整除则是闰年。
*/

int Leapyear(int year) {
    if (year < 0)
        return -1;//表示输入有误
    if (year < 1582) //第一种情况
    {
        if( 0 == year % 4)
            return 0; //表示是闰年
        else
            return 1; //表示是平年
    }
    if (year > 1582 && year < 172800)
    {
        if (0 == year % 100) //世纪元年
        {
            if (0 == year % 400)
                return 0;
            return 1;
        }
        else //非世纪元年
            if (0 == year % 4)
                return 0;
            else
                return 1;
    }
    else
        if (year % 3200 == 0 && year % 172800 == 0)
            return 0;
        else
            return 1;
}

/*测试代码
*author:dengzp
*2020年2月21日14:41:22
**/

int main() {
    std::cout << "****判断是不是闰年****" << std::endl;
    std::cout << "请输入一个需要判断的年份,需要大于公元0年,输入-2退出:" << std::endl;
    int year = 0;
    while (year != -2) { //输入-2退出
        std::cin >> year;
        int result = Leapyear(year);
        switch (result) {
            case -1: 
                std::cout << "Input ERROR!" << std::endl;
                break;
            case 0: 
                std::cout << " 输入的数据判断是闰年!" << std::endl;
                break;
            case 1: 
                std::cout << " 输入的数据判断是平年!" << std::endl;
                break;
            default:
                std::cout << " Unknow ERROR!" << std::endl;

        }   
    }
    return 0;
}

输出结果:

image.png

你可能感兴趣的:(判断年份是否闰年,最笨的方法)