本帖最后由 edata 于 2014-5-17 09:58 编辑
向院长致敬
 - ;;;数字转汉字by edata@mjtd
- ;;;数字转汉字函数(int->str sk_n) sk_n 实数整型范围
- (defun int->str(sk_n / sk- A I K LST LST2 S SK_N->STR1 SK_N->STR2 STR)
- (setq sk_n->str1'((0 "零")(1 "一")(2 "二")(3 "三")(4 "四")(5 "五")(6 "六")(7 "七")(8 "八")(9 "九"))
- sk_n->str2'((1 "")(2 "十")(3 "百")(4 "千")(5 "万")(6 "十万")(7 "百万")(8 "千万")(9 "亿万")(10 "十亿")
- (11 "百亿")(12 "万亿")(13 "兆")))
- (if (< sk_n 0)(setq sk_n(abs sk_n) sk- "负"))
- (if(= sk_n 0)(setq lst2 "零")
- (progn
- (setq str(rtos sk_n 2 0) lst'() i 0 lst2 "" )
- (while (/= (setq s(substr str (setq i(1+ i)) 1)) "")
- (setq lst(cons s lst))
- )
- (setq lst(reverse lst) k (1+(length lst)))
- (while(setq a(car lst))
- (setq lst2(strcat lst2
- (cond
- ((and (= a "0") (= k 2)) "")
- ((and (= a "0") (> k 1)(= (cadr lst) "0"))(setq k(1- k)) "")
- ((and (= a "0") (> k 1)(/= (cadr lst) "0"))(setq k(1- k)) "零")
- (t (strcat(cadr(assoc (atoi a) sk_n->str1))(cadr(assoc (setq k(1- k)) sk_n->str2)))))
- ))
- (setq lst(cdr lst))
- )
- (if sk-(setq lst2(strcat sk- lst2)))
- lst2
- )
- )
- )
- ;;;写文字程序
- ;;;输入实数整型范围
- (defun c:tt (/ i p k)
- (or(and (setq i(getreal "\nEnter integer number:"))(if (< i 0)(setq k t i (1+ i))(setq i(1- i))))(setq i 0))
- (if i
- (while (setq p (getpoint "\nInsert point:"))
- (entmake (list '(0 . "TEXT")
- (cons 1 (int->str (cond
- ((and (not k) (= i -1))(setq i (1+ i)))
- (k (setq i (1- i)))
- (t (setq i (1+ i))))))
- (cons 10 p)
- (cons 40 50)
- )
- )
- ))
- (princ)
- )
|