rebol-万年历

来源:互联网 发布:学会了单片机再学plc 编辑:程序博客网 时间:2024/06/10 00:17

这是rebol的小作业——万年历。因为这门课是本专业第一年开,所以为学弟学妹留点学习资料。其实用rebol来做这个还是很简单的,因为它本身内置有很多日期类型的修饰字。我们可以输入“? now”进行查询。



下面先把源码贴上

REBOL [title: Perpetual calendarauthor: humingversion: 1.0.4]print { 请输入类似“query 2014 06 ” }query: func [ a [integer!] b [integer!]  ][e: to-date reduce [ a b 1 ]nian: pick e 1yue: pick e 2week1: e/weekdayk: 0b: remainder nian 4b3: remainder nian 100if b3 = 0 [ b4: remainder nian 400 if b4 = 0 [ k: 1 ] ]if  ( b = 0 ) and ( b3 > 0) [ k: 1 ] daysnum: [ 31 28 31 30 31 30 31 31 30 31 30 31 ]daysnum1: pick daysnum yueif yue = 2 [ if k = 1 [ daysnum1: 29 ] ]i: 0weekn: week1 - 1print [ "^/""     " nian "年" yue"月日历" "^/" ]while [ i < daysnum1 ][ i: i + 1weekn: weekn + 1m: remainder weekn 7if m = 0 [ m: 7 ] print [ "     " i"号"     "     周"m ]]]


然后运行


下面解释一下程序的主要思路。

用户输入两组数字——转换成日期格式——判断是否为闰年——闰年2月为29天——依次打印日期和周几

方法二:

还可以这样,把判断闰年的部分换掉,用每年的12月31号是一年中的第几天来判断是否2月为29天。

c: to-date reduce [ a 12 31 ]

weekc: c/yearday

either weekc = 366 [ k: 1 ] [ k: 0 ]


欢迎大家多提修改意见,越简洁越好!

0 0
原创粉丝点击