随便输入一个日期怎么判断它是星期几。用c++实现。重要的是讲明怎么判断

没程序不要紧,怎么个算法要讲清楚

基姆拉尔森计算公式
  W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
http://baike.baidu.com/view/739374.htm

#include<iostream>
using namespace std;

void CaculateWeekDay(int y,int m, int d)
{
if(m==1||m==2) {
m+=12;
y--;
}
int iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
switch(iWeek)
{
case 0: cout <<"星期一"<<endl; break;
case 1: cout <<"星期二"<<endl; break;
case 2: cout <<"星期三"<<endl; break;
case 3: cout <<"星期四"<<endl; break;
case 4: cout <<"星期五"<<endl; break;
case 5: cout <<"星期六"<<endl; break;
case 6: cout <<"星期日"<<endl; break;
}
}
int main()
{
int year,month,day;
cout <<"请输入年 月 日"<<endl;
cin>>year;
cin>>month;
cin>>day;
CaculateWeekDay(year,month,day);
system("pause");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-01
我的想法是,
{首先定义一个日期范围比如 1950,1,1 (知道这天星期1)到2050,12,31
getday(当前日期){求出当前日期和 1950,1,1 的差的天数}

将天数getday()/7 计算相对的星期几,如果余数0,则也是星期一


每月几天,除了2月都是固定的,其中比较难做的地方就是计算从 1950,1,1到 输入日期有多少个闰年,此处添加另外一个函数getRunNian(){求的闰年个数}在将得到的细节天数计算到getday()中本回答被网友采纳
第2个回答  2018-07-17
我家男孩子再在6岁的时候就能够随便跟给一个日期便知道是星期几,很快的,又准确,怎么会这样呢?那么小的孩子是怎么算的那么快?
相似回答