- 积分
- 4382
- 明经币
- 个
- 注册时间
- 2005-4-2
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2010-12-23 22:20:11
|
显示全部楼层
本帖最后由 caoyin 于 2011-1-22 17:15 编辑
参加一下,练习,学习
--------------以下为答题内容--------------------
;判断表 Lst 是否是点对表
;[格式](consP Lst)
;[测试范例](consP '(0 . "AA"))->T
(defun consP(lst)
(if (and (listp lst)(vl-list-length lst)) nil t)
)
答案完全正确,此题得5分
根据不同的编程习惯,前面加不加(listp lsp)或(vl-consp lsp)都算正确
;判断指定数据是否是点
;[格式](PointP Data)
;[测试范例](PointP '(0 1 2))->T
(defun PointP(data)
(if(and (<= 2 (length data)3)(not (member nil (mapcar 'numberp data)))) t nil)
)
答案完全正确,此题得5分
可以去掉if语句
;写一句代码将变量
;MJTD1,MJTD2,MJTD3,...,MJTD1000
;赋值为
;1,2,3,...,1000
(defun c:test3()
(setq i 0)
(repeat 1000
(setq i (1+ i))
(set(read (strcat "MJTD" (itoa i))) i)
))
答案完全正确,此题得5分
;判断指定数据是否为偶数
;[格式](EvenP DATA)
;[测试范例](EvenP 5)->nil
(defun EvenP(data)
(if (and (numberp data) (= (rem data 2.0) 0)) t)
)
此题得2分
扣分原因,把2.0改为2就正确了,因为偶数必须是整数而不是实数
测试:(EvenP 4.0)->T
另外可以去掉if语句
;截取表的局部
; [格式](ListSub Lst Sta Len)
;[说明]Lst——表
;Sta——开始元素位置(第一个元素位置为 0)
;Len——以 sta 开始的长度,如果为 nil 则获取到最后
;[测试范例](lstsub '(1 2 3 4 5 6 7) 1 5)->(2 3 4 5 6)
(defun lstsub(lst sta len)
(repeat sta (setq lst (cdr lst)))
(setq lst (reverse lst))
(repeat (- (length lst) len)(setq lst (cdr lst)))(reverse lst)
)
答案完全正确,此题得10分
;求表中的数字与指定数字之差最大或最小的数字
;[格式](NumExty Num NumLst Mode)
;[说明]Num——数字
;NumLst——数字列表
;Mode——为 T 求之差最大,nil 求之差最小
;[测试范例]
;(NumExty 5.181 '(4.9 5.175 6 9.181 5.182 1.181 5.181 5.1) T)->9.181
(defun NumExty6(Num NumLst Mode)
(car (car(vl-sort (mapcar '(lambda(x) (list x (if Mode (+ Num x) (abs(- Num x))))) NumLst) '(lambda(x y) ((if Mode > <) (cadr x)(cadr y))))))
)
(defun c:test()
(NumExty6 5.181 '(4.9 5.175 6 9.181 5.182 1.181 5.181 5.1) nil)
)
答案完全正确,此题得13分
扣分原因:代码还有改进空间
-------------------------------------------------------------
总得分:40分(参与答题部分总分45分)
点评:
露水2的水平高,人也不错,期待和大家多多交流,为论坛的发展献力!
感谢露水2的参与,并感谢他为本次活动做出的贡献!祝新年愉快!!(caoyin)
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
评分
-
查看全部评分
|