专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

求能算出某天是星期几的算法,该如何处理

发布时间:2011-06-28 16:13:26 文章来源:www.iduyao.cn 采编人员:星星草
求能算出某天是星期几的算法
求能算出某天是星期几的算法?     那位大虾能帮忙啊?   急!

------解决方案--------------------
//快速计算星期几的公式
#include <stdio.h>
char *name[] = { "monday ",
"tuesday ",
"wednesday ",
"thursday ",
"friday ",
"saturday ",
"sunday "
};
void main(){
int D,M,Y,A;
scanf( "%d%d%d ",&Y,&M,&D);
if ((M == 1) || (M == 2)){
M += 12;
Y--;
}
A = (D + 2*M + 3*(M+1)/5 + Y + Y/4 - Y/100 + Y/400) % 7;
printf( "%s\n ",name[A]);
}
------解决方案--------------------
上面的内容是转的,下面的也是:

算法如下:
基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

在公式中d表示日期中的日数,m表示月份数,y表示年数。

注意:在公式中有个与其他公式不同的地方:

把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。

代码如下:
//y-年,m-月,d-日期
string CaculateWeekDay(int y,int m, int d)
{
if(m==1) m=13;
if(m==2) m=14;
int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
string weekstr= " ";
switch(week)
{
case 1: weekstr= "星期一 "; break;
case 2: weekstr= "星期二 "; break;
case 3: weekstr= "星期三 "; break;
case 4: weekstr= "星期四 "; break;
case 5: weekstr= "星期五 "; break;
case 6: weekstr= "星期六 "; break;
case 7: weekstr= "星期日 "; break;
}

return weekstr;
}
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: