c语言的科学与艺术 学习笔记--第5章习题 打印1900年以前的日历

Posted 横嘎大番薯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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月起 星期能不能对上就行了 

                    

          

 

以上是关于c语言的科学与艺术 学习笔记--第5章习题 打印1900年以前的日历的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript DOM编程艺术(第2版)学习笔记1(1~4章)

[NEFU 数据结构] 第 1 章 绪论 知识点整理

C语言学习笔记

《C++ Primer中文版(第5版)》学习笔记与习题完整发布!

R语言编程艺术快速入门

由浅入深学C语言基础(进阶与必做430题)