AUTOLISP编程输出问题
(defunC:M1()(setqa(getreal"A")b(getreal"B")w(+AB)X(*ab))(printx)(printw))源程序如下。按理说输出应...
(defun C:M1( )
(setq a (getreal "A")
b (getreal "B")
w (+ A B)
X (* a b)
)
(print x)
(print w)
)
源程序如下。按理说输出应该只是X和W,但是为什么实际输出的结果是
x
w
w
这样子。求高手解答下。。。
顺便问下比如我调用形式是DEFUN MM(X)
我调用的时候该这么输入?比如MM(3)这样就是无效的 展开
(setq a (getreal "A")
b (getreal "B")
w (+ A B)
X (* a b)
)
(print x)
(print w)
)
源程序如下。按理说输出应该只是X和W,但是为什么实际输出的结果是
x
w
w
这样子。求高手解答下。。。
顺便问下比如我调用形式是DEFUN MM(X)
我调用的时候该这么输入?比如MM(3)这样就是无效的 展开
1个回答
推荐于2016-10-20 · 知道合伙人软件行家
关注
展开全部
书写要完整才可以修改一下:
(defun C:M1( / %k1 %k2 %k3 %k4);要使代码不影响其它的程序,这个上面要写代码这个格式
(setvar "cmdecho" 0)
(setvar "blipmode" 0);加上这两句话,命令行不会出现你不希望的数值
(setq %k1 (getreal "\n请输入实数"));输入数值
(if (/= %k1 nil);如果第一个有输入那么第二个也要求输入
(setq %k2 (getreal "\n请数入实数"))
)
(if (/= %k2 nil);如果输入了两个数字那么就进行下面的计算
(progn
(setq %k3 (+ %k1 %k2))
(princ %k3)
(setq %k4 (* %k1 %k2))
(princ %k4)
)
)
(princ);命令结束的时候,要这句话,或(prin1)这样结束
)
;(defun MM (#k / );子函数要这个格式空格不可以少了。如果要消除子函数里面的代码影响,要这样格式:(defun MM (#k / #k %k1);这样里面的%k1就不会影响其它的程序了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询