m0_73616746 2022-10-10 13:27 采纳率: 66.7%
浏览 38
已结题

C语言类最小公倍数问题

编程时遇到这个,不知道如何遍历每个月份(各个月份天数不同)
在国外,每月的 13 号和每周的星期 5 都是不吉利的。特别是当 13 号那天恰好是星期 5时,更不吉利。输入特定年份与元旦那天是星期几,请你从小到大依次输出当年所有13 号是星期 5 的月份。如果当年不存在星期 5 是 13 号的月份,就输出一行 "Luck"
开始觉得就是最小公倍数问题,后来发现月份不同天数不同,然后卡住了

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-10-10 14:28
    关注

    没想的这么复杂,蔡勒公式就可以,供参考:

    #include <stdio.h>
    int Get_Week(int y, int m, int d)
    {
        int week = -1;
        if (m == 1 || m == 2)  m += 12,  y--;
        week = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7 + 1;
        return week;
    }
    int main()
    {
        int y, m, flg;
        printf("请输入(年份):");
        scanf("%d", &y);
        for (m = 1, flg = 0; m < 13; m++) {
            if (Get_Week(y, m, 13) == 5)
                printf(flg++ == 0 ? "%d" : " %d", m);
        }
        if (!flg)
            printf("Luck");
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月18日
  • 已采纳回答 10月10日
  • 创建了问题 10月10日