有关巧算星期几的算法?

school 2002-02-01 11:26:59
《程序员》2001试刊2及2001年下册《程序员》增值合订本中的《巧算星期几》中表2我知道是如何推出的,但表1不知如何推出的,还有例1和例2中的公式是如何推出的呢?希望知道的高手详细指教,在此多谢!!!
Email:myxiaoye@sina.com
...全文
273 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
school 2002-02-03
  • 打赏
  • 举报
回复
to : ripperxp(紫星)
请你看清楚,只须将输入的年(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;
中即可输出相应的星期码(A),
根据相应的星期码(A)通过printf("It's a %s.\n",name[A]);语句
调用存储星期名的数组
char *name[]={"Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday","Sunday"};
显示相应的星期名。
根本无须存储月份,不信自己编译运行试试看。

ripperxp 2002-02-03
  • 打赏
  • 举报
回复
所存的月份呢?
Larky 2002-02-02
  • 打赏
  • 举报
回复
程序员杂志里有一个详细的例子用的就是ta123的方法他里面有所有的数据
huangry 2002-02-02
  • 打赏
  • 举报
回复
北京大学《初等数论》这本书中的附录中有详细的推导过程
school 2002-02-02
  • 打赏
  • 举报
回复
to : langzhi(方舟)
谢谢!不过我还是想知道算法。

to : huangry(凯撒)
真的吗?和tg123(T.G.)不同吗?那可得好好看看。
 
to : tg123(T.G.) and Larky(睡仙)
我说的是一种适用于所有年份的公式呀。
要是如你们的方式推算一千年一万年甚至更长时间内的星期,就是光输入每年相应的数据都能让人发疯,还谈什么程序。

书中表1表2中的转换数确须按月算出,但那只是为了推导出相应的数学公式,并不需要把它们存在程序里,占用大量空间。
书中的表的变换数据似乎是依照相邻月份之间同一日的星期偏移数。

书中C源程序如下:

#include <stdio.h>
char *name[]={"Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday","Sunday"};
void main()
{
int D,M,Y,A;
printf("Day : ");
fflush(stdout);
scanf("%d",&D);
printf("Month : ");
fflush(stdout);
scanf("%d",&M);
printf("Year : ");
fflush(stdout);
scanf("%d",&Y);
/* January and February are treated as month 13 and 14,
respectively, form the year before. */
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("It's a %s.\n",name[A]);
}

  
tg123 2002-02-02
  • 打赏
  • 举报
回复
year2001only
033614625035
分别对应12个月

2001.2.1是星期几
(1+3)mod 7=4星期四

2002年可以类推
langzhi 2002-02-02
  • 打赏
  • 举报
回复
不需要算法。

weekday (日期) 就行了。(vb)
易语言经典算法:1. 取所有质数 2. 求最小公倍数 3. 求最大公约数 4. 汉诺塔 5. 9X9乘法表 6. 猫捉老鼠(筛选法) 7. 水仙花数问题 8. 计算组合 9. 身份证升级15位升级到18位 10. 用冒泡法排序数字 11. 九宫计算 12. 奶牛问题 13. 求阶乘 14. 折半查找 15. 给歌手打分 16. 航线设置 17. 数字全排列 18. 借书方案 19. 求直角三角形 20. 二分排序 21. 抢30 22. 求回文数 23. 斐波那契数列(递推法) 24. 分块查找 25. 求帕斯卡三角(杨辉三角) 26. 箱子问题(贪婪法) 27. 寻找文件(递归法) 28. 求最大公约数(递归法) 29. 取不重复数(排除法) 30. 拉丁方 31. 波松瓦分酒 32. 皇后问题 33. 背包问题 34. 角谷猜想 35. 邮票组合 36. 贮油点 37. 分解质因数 38. 任意进制转换(大数) 39. 计算星期几(常用公式) 40. 计算星期几(蔡勒公式) 41. 猴子吃桃子 42. 马踏棋盘 43. 打鱼还是晒网 44. 九位累进可除数 45. 十进制转为二进制 46. 九连环 47. 找窃贼 48. 哥德巴赫猜想 49. 最小生成数 50. 农夫过河 51. 旅游最省钱路径 52. 马克思手稿中的数学题 53. 上楼梯(递归).e 54. 上楼梯(非递归) 55. 金额大小写转换 56. 求一元二次方程的根(二分法) 57. 数字与IP地址间的转换 58. 八皇后问题(回溯法) 59. 求N阶幻方 60. 计算分数的精确值 61. 找零钱 62. 求一元二次方程的根(公式法) 63. 比赛日程(分治法) 64. 两个有序数组的合并 65. 统计投色子(2个)的结果 66. 12小球问题 67. 改进冒泡排序法 68. 螺旋数组 69. 射击环数 70. 猜数字游戏 71. 桶排序 72. 造币厂问题 73. 直接插入排序 74. 搬砖 75. 公车座位巧安排 76. 韩信点兵(中国剩余定理) 77. 黑洞数 78. 矩阵相乘 79. 螺旋矩阵问题(多循环法) 80. 买水果问题 81. 求平方根 82. 求任意三角形面积 83. 全排列问题(递推法) 84. 怎样组合值最大 85. 取两数之间均匀分布的随机数
文件夹目录: 1.取所有质数 2.求最小公倍数 3.求最大公约数 4.汉诺塔 5.9X9乘法表 6.猫捉老鼠(筛选法) 7.水仙花数问题 8.计算组合 9.身份证升级15位升级到18位 10.用冒泡法排序数字 11.九宫计算 12.奶牛问题 13.求阶乘 14.折半查找 15.给歌手打分 16.航线设置 17.数字全排列 18.借书方案 19.求直角三角形 20.二分排序 21.抢30 22.求回文数 23.斐波那契数列(递推法) 24.分块查找 25.求帕斯卡三角(杨辉三角) 26.箱子问题(贪婪法) 27.寻找文件(递归法) 28.求最大公约数(递归法) 29.取不重复数(排除法) 30.拉丁方 31.波松瓦分酒 32.皇后问题 33.背包问题 34.角谷猜想 35.邮票组合 36.贮油点 37.分解质因数 38.任意进制转换(大数) 39.计算星期几(常用公式) 40.计算星期几(蔡勒公式) 41.猴子吃桃子 42.马踏棋盘 43.打鱼还是晒网 44.九位累进可除数 45.十进制转为二进制 46.九连环 47.找窃贼 48.哥德巴赫猜想 49.最小生成数 50.农夫过河 51.旅游最省钱路径 52.马克思手稿中的数学题 53.上楼梯(递归).e 54.上楼梯(非递归) 55.金额大小写转换 56.求一元二次方程的根(二分法) 57.数字与IP地址间的转换 58.八皇后问题(回溯法) 59.求N阶幻方 60.计算分数的精确值 61.找零钱 62.求一元二次方程的根(公式法) 63.比赛日程(分治法) 64.两个有序数组的合并 65.统计投色子(2个)的结果 66.12小球问题 67.改进冒泡排序法 68.螺旋数组 69.射击环数 70.猜数字游戏 71.桶排序 72.造币厂问题 73.直接插入排序 74.搬砖 75.公车座位巧安排 76.韩信点兵(中国剩余定理) 77.黑洞数 78.矩阵相乘 79.螺旋矩阵问题(多循环法) 80.买水果问题 81.求平方根 82.求任意三角形面积 83.全排列问题(递推法) 84.怎样组合值最大 85.取两数之间均匀分布的随机数 算法: 递归 递推法 分块查找 筛选法 枚举法 冒泡法 二分法 贪婪法 本程序要易语言4.0以上版本才可以运行 易语言 V5.1 完美破解版下载地址: http://xiazai.xiazaiba.com/Soft/E/e_V5.1_XiaZaiBa.exe 应用平台: Win7 / Vista / Win2003 / WinXP / Win2000 软件大小: 102.25 MB

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧