我想帮助确定本期本期的基本模式。
我正在创建一个标识一年中某一天的程序(例如,2011年1月1日是2011年1月1日和2011年12月31日是365)。 2012年12月31日是第366天,因为它是闰年。我想帮助区分代码形式的闰年。
闰年是闰年,如果它可以被4整除但不能被100整除或者可以被400整除。
我似乎无法掌握编写这种飞跃识别功能的最有效方法。我在dev c编译器中使用c。如果你可以帮助我为一年中的某一天分配一个号码,我将非常感激。
答案 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);
}