如何用c语言编写一个检测并显示闰年日历的程序

问题描述 投票:0回答:1

显示闰年月份的命令是什么?我尝试使用此命令,但得到的输出是错误的。

    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];
c calendar
1个回答
0
投票

闰年:基本上,我们大多数人都知道,一年并不是完美的 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.