如果statemtents:识别闰年和日期日代码

时间:2017-10-31 22:45:03

标签: c

我想帮助确定本期本期的基本模式。

我正在创建一个标识一年中某一天的程序(例如,2011年1月1日是2011年1月1日和2011年12月31日是365)。 2012年12月31日是第366天,因为它是闰年。我想帮助区分代码形式的闰年。

  

闰年是闰年,如果它可以被4整除但不能被100整除或者可以被400整除。

我似乎无法掌握编写这种飞跃识别功能的最有效方法。我在dev c编译器中使用c。如果你可以帮助我为一年中的某一天分配一个号码,我将非常感激。

1 个答案:

答案 0 :(得分:0)

在实施一个函数来测试一个特定年份是否是一个闰年的公历(在采用公历之前应用格里高利历的规则)没有任何困难:

int isleap(unsigned int year) {
    return (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0));
}

如果你想要一个非常有效的函数,你可能希望在一定年份的范围内使用预先计算的字节数组,并将年份用作索引:

#define MAX_LEAP_YEAR  2100
unsigned char isleap_array[MAX_LEAP_YEAR] = { ... };

int last_isleap(unsigned int year) {
    if (year < MAX_LEAP_YEAR)
        return isleap_array[year];
    else
        return isleap(year);
}