给定一个年月日,计算那天是星期几(数学)

简介: 给定一个年月日,计算那天是星期几(数学)

给你一个年月日,如果要计算那天是星期几了话,我们就可以直接使用基姆拉尔森公式,但是,当月份为1月或者2月时,要让m加上12,同时年份减1,就是当成上一年的13月和14月来算。


if(m==1||m==2)
{
    m+=12;
    y--;
}
x=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;


利用此公式求出的余数x,如果x=0,则答案为星期一;x=1,则答案为星期二; x=2,则答案为星期三; x=3,则答案为星期四; x=4,则答案为星期五; x=5,则答案为星期六; x=6,则答案为星期日;。


全部代码如下:


#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
  int y,m,d,x;
  scanf("%d-%d-%d",&y,&m,&d);
  if(m==1||m==2)
  {
    m+=12;
    y--;
  }
  x=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
  switch(x)
  {
    case 0:
      cout<<"Monday"<<endl;
      break;
    case 1:
      cout<<"Tuesday"<<endl;
      break;
    case 2:
      cout<<"Wednesday"<<endl;
      break;
    case 3:
      cout<<"Thursday"<<endl;
      break;
    case 4:
      cout<<"Friday"<<endl;
      break;
    case 5:
      cout<<"Saturday"<<endl;
      break;
    case 6:
      cout<<"Sunday"<<endl;
      break;
  }
  return 0;
}
相关文章
|
5月前
|
存储 C语言
【C语言刷题每日一题#牛客网HJ73】——计算日期到天数转换(给定日期,计算是该年的第几天)
【C语言刷题每日一题#牛客网HJ73】——计算日期到天数转换(给定日期,计算是该年的第几天)
|
6月前
31.假定2007年的一月一日是星期一,输入一个时间(包含年、月、日),求出它是星期几。
31.假定2007年的一月一日是星期一,输入一个时间(包含年、月、日),求出它是星期几。
47 0
|
6月前
计算某年某月某日是星期几
计算某年某月某日是星期几
|
6月前
|
索引
每日一题吼吼吼(打印从1到最大n位数,计算是第几天)
每日一题吼吼吼(打印从1到最大n位数,计算是第几天)
36 0
|
6月前
|
Linux C++ iOS开发
C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加)
C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加)
97 0
OJ题库:计算日期到天数转换、打印从1到最大的n位数 、尼科彻斯定理
OJ题库:计算日期到天数转换、打印从1到最大的n位数 、尼科彻斯定理
59 0
牛客网刷题—— 计算日期到天数转换
牛客网刷题—— 计算日期到天数转换
【C#每日一题】输入任意一个日期显示出它是当年的第几天?星期几?并打印出当月的日历
作业1:输入任意一个日期显示出它是当年的第几天?星期几?并打印出当月的日历 运行结果: 上代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { .
162 0
【C#每日一题】输入任意一个日期显示出它是当年的第几天?星期几?并打印出当月的日历
(JAVA编程练习):输入某年某月某日,判断这一天是这一年的第几天?
(JAVA编程练习):输入某年某月某日,判断这一天是这一年的第几天?
(JAVA编程练习):输入某年某月某日,判断这一天是这一年的第几天?