c语言的科学与艺术 学习笔记--第5章习题 打印1900年以前的日历
作者:互联网
这是书上1900年以后日历的其中最重要的找到某年某月1日是星期几的源代码 现在要我们打印1900年以前的日历 其实要改的东西也就在这 其他基本照搬就行
受这个启发 那我们从1899 12 31日起 到 要找的某年某月1日 距离多少天 再模7 就知道是那月开头是星期几 但这里又跟原来的有一丢丢不一样 需要转一点点弯弯
1899/12/31 (往前多少天) 1 2 3 4 5 6 7 8 ...
(模7) 1 2 3 4 5 6 0 1
Su(0) (星期几) 6 5 4 3 2 1 0 6 ...
1900 1月1日是星期一 那1899/12/31就是星期天 往前一天是星期6........... 所以要算出1899/12/31往前n天是星期几
weekday = (7 - n%7 ) % 7 ;
现在贴上改变后的代码:
前面两个FOR循环算的就是 n % 7 至于为什么要减去1呢 因为我们要找出的是某年某月1日是星期几 MonthDays算的是每个月的天数 而我们是从1899/12/31开始算起 例如 我们要知道 1899/12/1是星期几 n应该是30天 但MonthDays返回31天 所以多了一天要减去 最后测试下看对不对 我们只要看看1899年12月起 星期能不能对上就行了
标签:星期,12,--,31,1899,某年某月,习题,1900 来源: https://www.cnblogs.com/aobaozi/p/14893159.html