rebol-万年历

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



下面先把源码贴上

REBOL [
	title: Perpetual calendar
	author: huming
	version: 1.0.4
]
	print { 请输入类似“query 2014 06 ” }
	query: func [ a [integer!] b [integer!]  ]
	[
		e: to-date reduce [ a b 1 ]
		nian: pick e 1
		yue: pick e 2
		week1: e/weekday
		k: 0
		
		b: remainder nian 4
		b3: remainder nian 100
		if 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 yue
		if yue = 2 [ if k = 1 [ daysnum1: 29 ] ]
		
		i: 0
		weekn: week1 - 1
		print [ "^/""     " nian "年" yue"月日历" "^/" ]
		while [ i < daysnum1 ]
		[ 	i: i + 1
			weekn: weekn + 1
			m: remainder weekn 7
			if 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 ]


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值