作者共发了2篇帖子。 内容转换:不转换▼
 
点击 回复
367 1
【试题】星期几
一派护法 十九级
1楼 发表于:2016-5-8 17:41
【题目】

【结果填空】 (满分5分)


    1949年的国庆节(10月1日)是星期六。

    今年(2012)的国庆节是星期一。

    那么,从建国到现在,有几次国庆节正好是星期日呢?


    只要答案,不限手段!
    可以用windows日历,windows计算器,Excel公式,。。。。。
    当然,也可以编程!

    不要求写出具体是哪些年,只要一个数目!
    千万不要提交源代码!

    答案不要写在这里,写在“解答.txt”中

【代码】
int main(void)
{
    int days[] = {31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int y = 1949;
    int m = 10;
    int d = 1;
    int week = 6;
   
    int cnt = 0;
    while (y < 2012)
    {
        if (days[1] == 0)
        {
            if (y % 400 == 0 || (y % 100 != 0 && y % 4 == 0))
                days[1] = 29;
            else
                days[1] = 28;
        }

        d++;
        if (d > days[m - 1])
        {
            d = 1;
            m++;
            if (m > 12)
            {
                m = 1;
                y++;
                days[1] = 0;
            }
        }

        week++;
        if (week > 6)
        {
            week = 0;
            if (m == 10 && d == 1)
            {
                cout << y << '-' << m << '-' << d << endl;
                cnt++;
            }
        }
    }

    cout << cnt << endl;

    return 0;
}

【输出】
1950-10-1
1961-10-1
1967-10-1
1972-10-1
1978-10-1
1989-10-1
1995-10-1
2000-10-1
2006-10-1
9
一派护法 十九级
2楼 发表于:2016-5-21 13:45
如果用C语言标准库函数的话,只能计算1970年后的年份。
【代码】
#include <stdio.h>
#include <string.h>
#include <time.h>

void main()
{
    time_t t;
    struct tm info;
    int cnt = 0;
    memset(&info, 0, sizeof(info));
   
    info.tm_year = 1970 - 1900;
    info.tm_mon = 10 - 1;
    info.tm_mday = 1;
   
    while (info.tm_year <= 2012 - 1900)
    {
        t = mktime(&info);
        if (info.tm_wday == 0)
        {
            printf("%s", ctime(&t));
            cnt++;
        }
        info.tm_year++;
    }
    printf("共有%d个\n", cnt);
}
【输出】
Sun Oct 01 00:00:00 1972
Sun Oct 01 00:00:00 1978
Sun Oct 01 00:00:00 1989
Sun Oct 01 00:00:00 1995
Sun Oct 01 00:00:00 2000
Sun Oct 01 00:00:00 2006
共有6个

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:367 回复数:1
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2016-5-21 13:45
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。