C 公历。如何找到星期一?

C 公历。如何找到星期一?,c,C,你们谁能帮我解释一下它的逻辑。 根据公历,它是1月1日的星期一。如果通过键盘输入任何一年,请编写一个程序,找出今年1月1日是哪一天。您要查找的是哪一天,它将告诉您任何给定日期的星期几 看起来是这样的: int getDayOfWeek(int day, int month, int year) { int aa = (14 - month) / 12; int yy = year - aa; int mm = (month + (12 * aa)) - 2;

你们谁能帮我解释一下它的逻辑。 根据公历,它是1月1日的星期一。如果通过键盘输入任何一年,请编写一个程序,找出今年1月1日是哪一天。

您要查找的是哪一天,它将告诉您任何给定日期的星期几

看起来是这样的:

int getDayOfWeek(int day, int month, int year) {

    int aa = (14 - month) / 12;
    int yy = year - aa;
    int mm = (month + (12 * aa)) - 2;

    int dayOfWeek = (day + yy + (yy / 4) - (yy / 100) + (yy / 400) + ((31 * mm) / 12)) % 7;

    return ((dayOfWeek + 6) % 7) + 1;
}
函数以ISO格式返回日期,其中周一==1,周日==7
  • 首先,我们要求用户输入任何年份(年)
  • 我们被要求找到1月1日,这意味着我们只需要上一年的最后日期。假设我们需要找到2010年。我们可以在这一天找到它,从1900到2009+1的天数。希望您现在理解。我们不需要输入年的全部天数。
  • 然后我们找到参考年份(1900年或拜尔)之间的差异
  • 然后我们通过除以4(lp)从差异中找出闰年的数量
  • 然后我们就可以知道在这两者之间有多少个正常年份(rem)
  • 然后我们计算总天数365*正常天数+366*闰年数+1 我们在1月1日添加了1,而不是12月31日。
  • 然后我们从总天数和休息时间中找出剩余时间,您可以理解
  • 我发现了几个代码,但都很混乱,所以我创建了一个简单且有效的代码。
  • 例如,用户输入2010=>2009=>2009-1900=>109=>27闰年和其他正常年份。用366乘以闰年数,用365乘以正常年份数,最后加1(找到2010年1月1日)。使用模运算符,你将在一周内得到1号。0==周一,1==周二,3==周三,依此类推

    main(){
    int yr,byr=1900,lp,rem,td,day;
    printf("Enter year:");
    scanf("%d",&yr);
    yr=(yr-1)-byr;
    lp=yr/4;
    rem=yr-lp;
    td=(rem*365)+(lp*366)+1;
    day=td%7;
    if (day==0)
        printf("Monday");
    else if (day==1)
        printf("Tuesday");
    else if (day==2)
        printf("Wednesday");
    else if (day==3)
        printf("Thursday");
    else if (day==4)
        printf("Friday");
    else if (day==5)
        printf("Saturday");
    else if (day==6)
        printf("Sunday");
    }
    

    你写了什么?你研究了什么?你遇到了什么问题?注意:当你尝试了某件事,遇到了某个问题,然后发布:你的尝试,你试图实现的目标,以及出了什么问题时,堆栈溢出问题通常是最好的回答