| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2169 人关注过本帖
标题:求助 推算日期
只看楼主 加入收藏
Sky_
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2019-12-17
结帖率:100%
收藏
 问题点数:0 回复次数:5 
求助 推算日期
已知2019年的国庆节(10月1日)在周二,现给出年份n,请你求出该年份的国庆节(10月1日)在星期几?
感觉很难很麻烦的样子 求助大佬
搜索更多相关主题的帖子: 年份 日期 
2020-01-02 15:30
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
这有虾米难的,算术题而已,星期几用7求余,只要计算出从到年份的10月1日的总天数再用7求余即得。求总天数是有公式的,也可循环计算获得。
给一个循环的例子如2020那,那么,循环2019年*12月即可得到总天数:
图片附件: 游客没有浏览图片的权限,请 登录注册

用 计算月的天数 这个函数去循环即得总天数。
程序代码:
    int n = 2020, y = 10, r = 1;
    while (n)if (--y)r += 计算月的天数(n, y); else --n, y = 13;
    cout << r <<"总天数 国庆星期"<< r % 7 << endl;

另外一个计算公式一般人看不懂,都望而却步,可参https://blog. 有兴趣自己去看去理解。
上面代码运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2020-1-3 20:04编辑过]

2020-01-03 20:02
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
用你的已知也是可以求的,循环量少了而已,道理还是一样的,就是求年数和已知之间的天数,照样用7求余,再加或减已知星期,按理来推,具体就不去验证了。
2020-01-03 20:20
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
今得闲,就来分析一下,用你的已知推算,推算不用想得很远令人畏难,只在7天之内推算,比如已知2019-10-1为周二,那么,往后推7天即2019-10-8,2个日期相差7天,用7求余为0,这天还是周二,因此要在求余加上已知周几即得正确答案,那比如往后推4天即2019-10-5,2个日期差4用7求余为4再加已知2即得周六也正确,那往后推6天怎样?用7求余为6再加2=8再用7求余为1即得周一才正确,综上所述,即日期往后推应加上已知周二这样一次求余即得正确答案;
那么,往前推日期又是虾米情况?还用上面的3个典型天数推,7天还是周二?随意打开日历算一下就知道应该是周二才对,怎么知道的?先不用跨月算,先用日历上的19和12算7天的就对了,那么,跨月如何算?那就要用到我的函数了即求9月天数再加10月1日的一天得从9月1日起到10月1日的总天数再减去9月的天数即得2个日期差值即往前7天为9月24日,2019-9月为30天再加1天即到国庆总天数为31天-24天=7天,7+2再求余7即得周二。那么,往前4天?怎么算?如前先求出到国庆总天数减去4天可得31-4=27即9月27日,日期计算正确了,差值为4还加2?加2等于6求余为周六,查日历为周五,减去2?减去2等于2求余为周二也不对,怎么算?7+2-4=5,那么,往前6天?差值6,7+2-6=3。对?其中道理自己去悟。从此近推远就通顺了,还用我这函数来做验证:
程序代码:
    int n = 2019, y = 10, r = 1, n1 = 2017, y1 = 10, r1 = 1, z = 2;
    while (n>=n1)if (--y)r += 计算月的天数(n, y); else --n, y = 13;
    n = n1;
    while (n1 >= n)if (--y1)r1 += 计算月的天数(n1, y1); else --n1, y1 = 13;
    cout << r - r1 << "天数差 国庆星期" << ((7 + z) - ((r - r1) % 7)) % 7 << endl;

之上程序往前推算,分别用2018到2014计算都得正确答案,可自己去试一试。
当然了,你也可以用7-4+2或7-6+2的算式同样得到正确答案。

[此贴子已经被作者于2020-1-4 10:14编辑过]

2020-01-04 10:11
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:0 
2020-01-10 16:15
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2020-01-16 12:55
快速回复:求助 推算日期
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018784 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved