二维码
微世推网

扫一扫关注

当前位置: 首页 » 快闻头条 » 供应资讯 » 正文

C\C++_由日期简单计算出某一天是星期几

放大字体  缩小字体 发布日期:2023-04-15 10:33:30    作者:何昊宇    浏览次数:75
导读

直接看代码和注释:#include iostreamusing namespace std;bool isLeap(int y){....return (((y%4==0)(y%100!=0)) || (y%400==0));}int daysOfMonth(int y,int m){....switch(m)....{....case 1: case 3:case 5:case

直接看代码和注释:

#include <iostream>

using namespace std;

bool isLeap(int y)

{

....return (((y%4==0) && (y%100!=0)) || (y%400==0));

}

int daysOfMonth(int y,int m)

{

....switch(m)

....{

....case 1: case 3:case 5:case 7:case 8:

....case 10:case 12:

........return 31;

....case 4: case 6:case 9:case 11:

........return 30;

....case 2:

........if(isLeap(y))

............return 29;

........else

............return 28;

....}

....return 0;

}

// 公元1年1月1日是周1

int weekDay0(int y, int m, int d) //暴力法,天数全部累加

{

....int wd=0;

....for(int i=1; i<y; ++i)

........wd += 365+isLeap(i);

....for(int j=1; j<m;j++)

........wd+=daysOfMonth(y,j);

....wd = wd+d;

....wd%=7;

....return wd;

}

// 公元1年1月1日是周1

// 如果不考虑闰年,则一年是365天,365%7=1

// 所以公元2年得第壹天是周二、公元3年得第壹天是周三……

// 这样,再把闰年考虑进来即可

// 公元1年1月1日是周1

// 公元2年1月1日是周2

// 公元3年1月1日是周3

// 公元4年1月1日是周4 (闰年是闰二月)

// 公元5年1月1日是周6(上一年是闰二月,要加一天)

// ……

int weekDay(int y, int m, int d)

{

....int wd=0;

....wd=y+(y-1)/4-(y-1)/100+(y-1)/400;

....for(int j=1; j<m;j++)

........wd+=daysOfMonth(y,j);

....wd = wd+d-1; // 是在1月1日得基础上递推得,所以日期-1

....wd%=7;

....return wd;

}

int main()

{

....cout<<weekDay(前年,11,9)<<endl; //6

....system("pause");

....return 0;

}

-End-

 
(文/何昊宇)
打赏
免责声明
• 
本文为何昊宇原创作品•作者: 何昊宇。欢迎转载,转载请注明原文出处:http://www.udxd.com/news/show-377708.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们邮件:weilaitui@qq.com。
 

Copyright©2015-2023 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈