其他分享
首页 > 其他分享> > c语言的科学与艺术 学习笔记--第5章习题 打印1900年以前的日历

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