关于如何检查闰年的C程序

时间:2014-10-10 15:23:14

标签: c date

如何调整此代码的输出:

  • 让我说当我输入2012年。输出应该是2012年2月29日星期三是闰年(与其他闰年相同)

  • 如果我在2013年打字,输出应该是2013年不是闰年。

这是我目前的代码:

include <stdio.h>
int main()
{
    int year;
    printf("Enter a year to check if it is a leap year\n");
    scanf("%d", &year);
    if ( year%400 == 0)
        printf("%d is a leap year.\n", year);
    else if ( year%100 == 0)
        printf("%d is not a leap year.\n", year);
    else if ( year%4 == 0 )
        printf("%d is a leap year.\n", year);
    else
        printf("%d is not a leap year.\n", year);
    return 0;
}

我应该如何确定闰年2月29日的星期几?

2 个答案:

答案 0 :(得分:0)

你的问题让我感觉就像是自己获得 并开始研究和编写代码。我找到了一段代码,通过输入日期模式返回一天。在你的情况下,如果它是闰年,日期将是29,2,年,如果它不是28,2,年。这里代表星期日,1代表星期一,同样6代表星期六。

/* A program to find day of a given date */
#include<stdio.h>

int dayofweek(int d, int m, int y)
{
    static int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
    y -= m < 3;
    return ( y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}

/* Driver function to test above function */
int main()
{
    int day = dayofweek(10, 10, 2014);
    printf ("%d", day);

    return 0;
}

如果您在代码中发现任何错误或难以对其进行更改。请让我知道我会尽力帮助。在您的代码中添加此代码可能会满足您的需求。

答案 1 :(得分:-1)

正如https://stackoverflow.com/a/21235587/3578315中所述 你可以使用一个班轮代码
weekday = (d+=m<3?y--:y-2,23*m/9+d+4+y/4-y/100+y/400)%7;
其中m = 2,d = 29,y =年份 工作日从星期日开始。 (0 - 星期日,1 - 星期一,......)