2.1 AutoLISP 是否需要对变量进行类型的说明?在程序的运行过程中,是否可以改变变量的
数据类型?
AutoLISP 无需要对变量进行事先的类型说明,变量被赋予的值的类型就是变量的类型。
用 setq 函数对变量进行赋值,例如
(setq a 5)赋值之后的结果是,变量 a 类型是整型的
(setq a 5.0)赋值之后的结果是,变量 a 类型是实型的
(setq a "5")赋值之后的结果是,变量 a 类型是字符串型的
(setq a '5')赋值之后的结果是,错误,因为变量类型是没有字符型的
但
2.3 填空题
(1)执行表达式(setq a b b 1)之后,a 的值是:
A. 1
B. B C. nil
D. 0
E.1.0
(2)执行表达式(setq X 5 Y X)之后,Y 的值是:
A. nil B. 5 C.0 D. X
E."X"
(3)执行表达式(+(* 2.5 2)/ 103)的值是:
A. 8
B. 8.0
C. 8.3
D. 8.333333
答:
(1)C
(2)B
(3)错误:参数类型错误:numberp: #
(+(* 2.5 2)(/ 10 3))的值是 8.0
2.5 定义一个求三角形面积的函数
(defun area(a b c / tmp1 tmp2)
(if (and (>(+ a b) c) (>(+ a c) b) (>(+ b c) a))
(progn
(setq tmp1 (/ (+ a b c) 2.0))
;(setq tmp1 6.0)
(setq tmp2 (sqrt (* tmp1 (- tmp1 a)(- tmp1 b)(- tmp1 c) ) ) )
)
)
(defun TriangleArea
(a b c)
(if (> a (+ b c))
(princ)
)
(if (> b (+ a c))
(princ)
)
(if (> c (+ a b))
(princ)
)
(setq p (/ (+ a b c) 2))
(setq area (sqrt (* p (- p a) (- p b) (- p c))))
(print area)
)
3.1、加载以下 5 个表达式之后,a、b、c、d、e 的值分别是多少?
(setq
a 1)
a=1
(if (/= a 0) (setq b 2))
B=2
(if (= a 0) (setq c 3)(setq c 4))
C=4
(if (> a 0) (setq d (* b c))(setq d (* a c)))
D=b*c=8
(if (and (> b 2) (< c 3)) (setq e (+ a b) (setq e (- c d)))
E=c-d=-4
3.3 执行下面表达式能否获得正常结果?为什么?
(repeat 10) (setq m (+ n 10))
错误:参数类型错误,: numberp: nil
不能,因为程序加载时,n 没有定义。只要加载一次时,n 有定义,以后即使程
序里 n 没有定义,表达式也能获得正常结果。如:
第一次加载为:
(setq n 0)(repeat 10) (setq m (+ n 10))
第二次加载为:
(repeat 10) (setq m (+ n 10))
结果照样为 10
AutoLISP 会为每个变量的值进行保存,一直到退出 AutoCAD 为止
3.5 下面是函数 fun 的定义,若 x 的值依次是-5,5,15,25,先预测 x 的值,然后
通过程序验证预测的结果。
(defun fun(x)
(setq a 1 b 2)
(setq n (cond((< x 0)(+ a b))
((< x 10)(- a b))
((< x 20)(* a b))
(t(/ a b))
)
)
)
预测:n 的值分别为 3、-1、2、0.5
程序:n 的值分别为 3、-1、2、0
3.7、编写程序,求解用一元的人民币兑换壹分、贰分、、伍分硬币的所有兑换
方案(不包括某种硬币为 0 的解)。
(defun change(/ one two five)
(setq five 1)
(while (< five 20)
(setq two 1)
(while (< two 50)
(setq one 1)
(while (< one 100)
(setq cost(+ (* 5 five)(* 2 two)(* 1 one)))
(if (= cost 100)
(print(list "1·Ö="one "2·Ö="two "5·Ö="five)))
(setq one (1+ one))
)
(setq two (1+ two))
)
(setq five (1+ five))
)
(princ)
)
$ (change)
("1 分=" 1 "2 分=" 2 "5 分=" 19)
("1 分=" 1 "2 分=" 7 "5 分=" 17)
("1 分=" 1 "2 分=" 12 "5 分=" 15)
("1 分=" 1 "2 分=" 17 "5 分=" 13)
("1 分=" 1 "2 分=" 22 "5 分=" 11)
("1 分=" 1 "2 分=" 27 "5 分=" 9)
("1 分=" 1 "2 分=" 32 "5 分=" 7)
("1 分=" 1 "2 分=" 37 "5 分=" 5)
("1 分=" 1 "2 分=" 42 "5 分=" 3)
("1 分=" 1 "2 分=" 47 "5 分=" 1)
("1 分=" 2 "2 分=" 4 "5 分=" 18)
("1 分=" 2 "2 分=" 9 "5 分=" 16)
("1 分=" 2 "2 分=" 14 "5 分=" 14)
("1 分=" 2 "2 分=" 19 "5 分=" 12)
("1 分=" 2 "2 分=" 24 "5 分=" 10)
("1 分=" 2 "2 分=" 29 "5 分=" 8)
("1 分=" 2 "2 分=" 34 "5 分=" 6)
("1 分=" 2 "2 分=" 39 "5 分=" 4)
("1 分=" 2 "2 分=" 44 "5 分=" 2)
("1 分=" 3 "2 分=" 1 "5 分=" 19)
("1 分=" 3 "2 分=" 6 "5 分=" 17)
("1 分=" 3 "2 分=" 11 "5 分=" 15)
("1 分=" 3 "2 分=" 16 "5 分=" 13)
("1 分=" 3 "2 分=" 21 "5 分=" 11)
("1 分=" 3 "2 分=" 26 "5 分=" 9)
("1 分=" 3 "2 分=" 31 "5 分=" 7)
("1 分=" 3 "2 分=" 36 "5 分=" 5)
("1 分=" 3 "2 分=" 41 "5 分=" 3)
("1 分=" 3 "2 分=" 46 "5 分=" 1)
("1 分=" 4 "2 分=" 3 "5 分=" 18)
("1 分=" 4 "2 分=" 8 "5 分=" 16)
("1 分=" 4 "2 分=" 13 "5 分=" 14)
("1 分=" 4 "2 分=" 18 "5 分=" 12)
("1 分=" 4 "2 分=" 23 "5 分=" 10)
("1 分=" 4 "2 分=" 28 "5 分=" 8)
("1 分=" 4 "2 分=" 33 "5 分=" 6)
("1 分=" 4 "2 分=" 38 "5 分=" 4)
("1 分=" 4 "2 分=" 43 "5 分=" 2)
("1 分=" 5 "2 分=" 5 "5 分=" 17)
("1 分=" 5 "2 分=" 10 "5 分=" 15)
("1 分=" 5 "2 分=" 15 "5 分=" 13)
("1 分=" 5 "2 分=" 20 "5 分=" 11)
("1 分=" 5 "2 分=" 25 "5 分=" 9)
("1 分=" 5 "2 分=" 30 "5 分=" 7)
("1 分=" 5 "2 分=" 35 "5 分=" 5)
("1 分=" 5 "2 分=" 40 "5 分=" 3)
("1 分=" 5 "2 分=" 45 "5 分=" 1)
("1 分=" 6 "2 分=" 2 "5 分=" 18)
("1 分=" 6 "2 分=" 7 "5 分=" 16)
("1 分=" 6 "2 分=" 12 "5 分=" 14)
("1 分=" 6 "2 分=" 17 "5 分=" 12)
("1 分=" 6 "2 分=" 22 "5 分=" 10)
("1 分=" 6 "2 分=" 27 "5 分=" 8)
("1 分=" 6 "2 分=" 32 "5 分=" 6)
("1 分=" 6 "2 分=" 37 "5 分=" 4)
("1 分=" 6 "2 分=" 42 "5 分=" 2)
("1 分=" 7 "2 分=" 4 "5 分=" 17)
("1 分=" 7 "2 分=" 9 "5 分=" 15)
("1 分=" 7 "2 分=" 14 "5 分=" 13)
("1 分=" 7 "2 分=" 19 "5 分=" 11)
("1 分=" 7 "2 分=" 24 "5 分=" 9)
("1 分=" 7 "2 分=" 29 "5 分=" 7)
("1 分=" 7 "2 分=" 34 "5 分=" 5)
("1 分=" 7 "2 分=" 39 "5 分=" 3)
("1 分=" 7 "2 分=" 44 "5 分=" 1)
("1 分=" 8 "2 分=" 1 "5 分=" 18)
("1 分=" 8 "2 分=" 6 "5 分=" 16)
("1 分=" 8 "2 分=" 11 "5 分=" 14)
("1 分=" 8 "2 分=" 16 "5 分=" 12)
("1 分=" 8 "2 分=" 21 "5 分=" 10)
("1 分=" 8 "2 分=" 26 "5 分=" 8)
("1 分=" 8 "2 分=" 31 "5 分=" 6)
("1 分=" 8 "2 分=" 36 "5 分=" 4)
("1 分=" 8 "2 分=" 41 "5 分=" 2)
("1 分=" 9 "2 分=" 3 "5 分=" 17)
("1 分=" 9 "2 分=" 8 "5 分=" 15)
("1 分=" 9 "2 分=" 13 "5 分=" 13)
("1 分=" 9 "2 分=" 18 "5 分=" 11)
("1 分=" 9 "2 分=" 23 "5 分=" 9)
("1 分=" 9 "2 分=" 28 "5 分=" 7)
("1 分=" 9 "2 分=" 33 "5 分=" 5)
("1 分=" 9 "2 分=" 38 "5 分=" 3)
("1 分=" 9 "2 分=" 43 "5 分=" 1)
("1 分=" 10 "2 分=" 5 "5 分=" 16)
("1 分=" 10 "2 分=" 10 "5 分=" 14)
("1 分=" 10 "2 分=" 15 "5 分=" 12)
("1 分=" 10 "2 分=" 20 "5 分=" 10)
("1 分=" 10 "2 分=" 25 "5 分=" 8)
("1 分=" 10 "2 分=" 30 "5 分=" 6)
("1 分=" 10 "2 分=" 35 "5 分=" 4)
("1 分=" 10 "2 分=" 40 "5 分=" 2)
("1 分=" 11 "2 分=" 2 "5 分=" 17)
("1 分=" 11 "2 分=" 7 "5 分=" 15)
("1 分=" 11 "2 分=" 12 "5 分=" 13)
("1 分=" 11 "2 分=" 17 "5 分=" 11)
("1 分=" 11 "2 分=" 22 "5 分=" 9)
("1 分=" 11 "2 分=" 27 "5 分=" 7)
("1 分=" 11 "2 分=" 32 "5 分=" 5)
("1 分=" 11 "2 分=" 37 "5 分=" 3)
("1 分=" 11 "2 分=" 42 "5 分=" 1)
("1 分=" 12 "2 分=" 4 "5 分=" 16)
("1 分=" 12 "2 分=" 9 "5 分=" 14)
("1 分=" 12 "2 分=" 14 "5 分=" 12)
("1 分=" 12 "2 分=" 19 "5 分=" 10)
("1 分=" 12 "2 分=" 24 "5 分=" 8)
("1 分=" 12 "2 分=" 29 "5 分=" 6)
("1 分=" 12 "2 分=" 34 "5 分=" 4)
("1 分=" 12 "2 分=" 39 "5 分=" 2)
("1 分=" 13 "2 分=" 1 "5 分=" 17)
("1 分=" 13 "2 分=" 6 "5 分=" 15)
("1 分=" 13 "2 分=" 11 "5 分=" 13)
("1 分=" 13 "2 分=" 16 "5 分=" 11)
("1 分=" 13 "2 分=" 21 "5 分=" 9)
("1 分=" 13 "2 分=" 26 "5 分=" 7)
("1 分=" 13 "2 分=" 31 "5 分=" 5)
("1 分=" 13 "2 分=" 36 "5 分=" 3)
("1 分=" 13 "2 分=" 41 "5 分=" 1)
("1 分=" 14 "2 分=" 3 "5 分=" 16)
("1 分=" 14 "2 分=" 8 "5 分=" 14)
("1 分=" 14 "2 分=" 13 "5 分=" 12)
("1 分=" 14 "2 分=" 18 "5 分=" 10)
("1 分=" 14 "2 分=" 23 "5 分=" 8)
("1 分=" 14 "2 分=" 28 "5 分=" 6)
("1 分=" 14 "2 分=" 33 "5 分=" 4)
("1 分=" 14 "2 分=" 38 "5 分=" 2)
("1 分=" 15 "2 分=" 5 "5 分=" 15)
("1 分=" 15 "2 分=" 10 "5 分=" 13)
("1 分=" 15 "2 分=" 15 "5 分=" 11)
("1 分=" 15 "2 分=" 20 "5 分=" 9)
("1 分=" 15 "2 分=" 25 "5 分=" 7)
("1 分=" 15 "2 分=" 30 "5 分=" 5)
("1 分=" 15 "2 分=" 35 "5 分=" 3)
("1 分=" 15 "2 分=" 40 "5 分=" 1)
("1 分=" 16 "2 分=" 2 "5 分=" 16)
("1 分=" 16 "2 分=" 7 "5 分=" 14)
("1 分=" 16 "2 分=" 12 "5 分=" 12)
("1 分=" 16 "2 分=" 17 "5 分=" 10)
("1 分=" 16 "2 分=" 22 "5 分=" 8)
("1 分=" 16 "2 分=" 27 "5 分=" 6)
("1 分=" 16 "2 分=" 32 "5 分=" 4)
("1 分=" 16 "2 分=" 37 "5 分=" 2)
("1 分=" 17 "2 分=" 4 "5 分=" 15)
("1 分=" 17 "2 分=" 9 "5 分=" 13)
("1 分=" 17 "2 分=" 14 "5 分=" 11)
("1 分=" 17 "2 分=" 19 "5 分=" 9)
("1 分=" 17 "2 分=" 24 "5 分=" 7)
("1 分=" 17 "2 分=" 29 "5 分=" 5)
("1 分=" 17 "2 分=" 34 "5 分=" 3)
("1 分=" 17 "2 分=" 39 "5 分=" 1)
("1 分=" 18 "2 分=" 1 "5 分=" 16)
("1 分=" 18 "2 分=" 6 "5 分=" 14)
("1 分=" 18 "2 分=" 11 "5 分=" 12)
("1 分=" 18 "2 分=" 16 "5 分=" 10)
("1 分=" 18 "2 分=" 21 "5 分=" 8)
("1 分=" 18 "2 分=" 26 "5 分=" 6)
("1 分=" 18 "2 分=" 31 "5 分=" 4)
("1 分=" 18 "2 分=" 36 "5 分=" 2)
("1 分=" 19 "2 分=" 3 "5 分=" 15)
("1 分=" 19 "2 分=" 8 "5 分=" 13)
("1 分=" 19 "2 分=" 13 "5 分=" 11)
("1 分=" 19 "2 分=" 18 "5 分=" 9)
("1 分=" 19 "2 分=" 23 "5 分=" 7)
("1 分=" 19 "2 分=" 28 "5 分=" 5)
("1 分=" 19 "2 分=" 33 "5 分=" 3)
("1 分=" 19 "2 分=" 38 "5 分=" 1)
("1 分=" 20 "2 分=" 5 "5 分=" 14)
("1 分=" 20 "2 分=" 10 "5 分=" 12)
("1 分=" 20 "2 分=" 15 "5 分=" 10)
("1 分=" 20 "2 分=" 20 "5 分=" 8)
("1 分=" 20 "2 分=" 25 "5 分=" 6)
("1 分=" 20 "2 分=" 30 "5 分=" 4)
("1 分=" 20 "2 分=" 35 "5 分=" 2)
("1 分=" 21 "2 分=" 2 "5 分=" 15)
("1 分=" 21 "2 分=" 7 "5 分=" 13)
("1 分=" 21 "2 分=" 12 "5 分=" 11)
("1 分=" 21 "2 分=" 17 "5 分=" 9)
("1 分=" 21 "2 分=" 22 "5 分=" 7)
("1 分=" 21 "2 分=" 27 "5 分=" 5)
("1 分=" 21 "2 分=" 32 "5 分=" 3)
("1 分=" 21 "2 分=" 37 "5 分=" 1)
("1 分=" 22 "2 分=" 4 "5 分=" 14)
("1 分=" 22 "2 分=" 9 "5 分=" 12)
("1 分=" 22 "2 分=" 14 "5 分=" 10)
("1 分=" 22 "2 分=" 19 "5 分=" 8)
("1 分=" 22 "2 分=" 24 "5 分=" 6)
("1 分=" 22 "2 分=" 29 "5 分=" 4)
("1 分=" 22 "2 分=" 34 "5 分=" 2)
("1 分=" 23 "2 分=" 1 "5 分=" 15)
("1 分=" 23 "2 分=" 6 "5 分=" 13)
("1 分=" 23 "2 分=" 11 "5 分=" 11)
("1 分=" 23 "2 分=" 16 "5 分=" 9)
("1 分=" 23 "2 分=" 21 "5 分=" 7)
("1 分=" 23 "2 分=" 26 "5 分=" 5)
("1 分=" 23 "2 分=" 31 "5 分=" 3)
("1 分=" 23 "2 分=" 36 "5 分=" 1)
("1 分=" 24 "2 分=" 3 "5 分=" 14)
("1 分=" 24 "2 分=" 8 "5 分=" 12)
("1 分=" 24 "2 分=" 13 "5 分=" 10)
("1 分=" 24 "2 分=" 18 "5 分=" 8)
("1 分=" 24 "2 分=" 23 "5 分=" 6)
("1 分=" 24 "2 分=" 28 "5 分=" 4)
("1 分=" 24 "2 分=" 33 "5 分=" 2)
("1 分=" 25 "2 分=" 5 "5 分=" 13)
("1 分=" 25 "2 分=" 10 "5 分=" 11)
("1 分=" 25 "2 分=" 15 "5 分=" 9)
("1 分=" 25 "2 分=" 20 "5 分=" 7)
("1 分=" 25 "2 分=" 25 "5 分=" 5)
("1 分=" 25 "2 分=" 30 "5 分=" 3)
("1 分=" 25 "2 分=" 35 "5 分=" 1)
("1 分=" 26 "2 分=" 2 "5 分=" 14)
("1 分=" 26 "2 分=" 7 "5 分=" 12)
("1 分=" 26 "2 分=" 12 "5 分=" 10)
("1 分=" 26 "2 分=" 17 "5 分=" 8)
("1 分=" 26 "2 分=" 22 "5 分=" 6)
("1 分=" 26 "2 分=" 27 "5 分=" 4)
("1 分=" 26 "2 分=" 32 "5 分=" 2)
("1 分=" 27 "2 分=" 4 "5 分=" 13)
("1 分=" 27 "2 分=" 9 "5 分=" 11)
("1 分=" 27 "2 分=" 14 "5 分=" 9)
("1 分=" 27 "2 分=" 19 "5 分=" 7)
("1 分=" 27 "2 分=" 24 "5 分=" 5)
("1 分=" 27 "2 分=" 29 "5 分=" 3)
("1 分=" 27 "2 分=" 34 "5 分=" 1)
("1 分=" 28 "2 分=" 1 "5 分=" 14)
("1 分=" 28 "2 分=" 6 "5 分=" 12)
("1 分=" 28 "2 分=" 11 "5 分=" 10)
("1 分=" 28 "2 分=" 16 "5 分=" 8)
("1 分=" 28 "2 分=" 21 "5 分=" 6)
("1 分=" 28 "2 分=" 26 "5 分=" 4)
("1 分=" 28 "2 分=" 31 "5 分=" 2)
("1 分=" 29 "2 分=" 3 "5 分=" 13)
("1 分=" 29 "2 分=" 8 "5 分=" 11)
("1 分=" 29 "2 分=" 13 "5 分=" 9)
("1 分=" 29 "2 分=" 18 "5 分=" 7)
("1 分=" 29 "2 分=" 23 "5 分=" 5)
("1 分=" 29 "2 分=" 28 "5 分=" 3)
("1 分=" 29 "2 分=" 33 "5 分=" 1)
("1 分=" 30 "2 分=" 5 "5 分=" 12)
("1 分=" 30 "2 分=" 10 "5 分=" 10)
("1 分=" 30 "2 分=" 15 "5 分=" 8)