显示闰年月份的命令是什么?我尝试使用此命令,但得到的输出是错误的。
if ((year % 4 == 0)
return 29;
else
return 28;
}
else
{
int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
return daysInMonth[monthNumber];
闰年:基本上,我们大多数人都知道,一年并不是完美的 365 天 长度上,更接近365.25。
因此,每四年,我们将二月添加一天,使其成为 29 天。但那个 并不完美。所以每 100 年(百年纪念,如 1800 年、1900 年等)我们都会这样做 不要在二月中添加一天。但这还不是很完美——所以每 4 个 百年纪念(2000、2400、2800...)我们确实在二月添加了一天。
到目前为止效果很好...
IS_LEAP_YEAR()
宏考虑了刚才讨论的每个因素:你可以看到
它也关心 4、100 和 400 的模数。
这里的代码可以帮助您克服当前的难点。经过测试的可运行版本位于here:
#include <stdio.h>
#define IS_LEAP_YEAR(yr) (!((yr)%400) || (!((yr)%4) && (((yr)%100))) )
int days_in_month(int year, int month)
{
int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(IS_LEAP_YEAR(year))
daysInMonth[2]= 29;
return daysInMonth[month];
}
int main(int argc, char *argv[])
{
int year = 2000, mon = 2;
printf("year: %d month: %d has %d days.\n",
year, mon, days_in_month(year, mon));
return 0;
}