需要Scheme程序来打印数字名称

时间:2013-10-24 04:10:21

标签: lisp scheme racket

例如:

  

(编号5513345)   (五百五十三万三千四百五十五)

我不确定该怎么做?

我试图这样做并最终得到一系列案例陈述。该程序将成功打印出十个以下的整数名称,但几乎没有。

(define numname 
  (lambda (n) 
    (if (= n 0)
        0 
        (cond ((= n 9) 'nine) 
              ((= n 8) 'eight) 
              ((= n 7) 'seven) 
              ((= n 6) 'six) 
              ((= n 5) 'five) 
              ((= n 4) 'four) 
              ((= n 3) 'three) 
              ((= n 2) 'two) 
              (else 'one))))) 

1 个答案:

答案 0 :(得分:3)

你走在正确的轨道上。举个例子:

5513345

这是:

5 513 345

即:

five million five hundred thirteen thousand three hundred forty five

可以写成:

                        five   million
five  hundred       thirteen   thousand
three hundred forty     five   (units)

看到出现的模式?您的方法适用于低于10的数字(实际上,您可能希望达到19,因为10到20之间的数字具有不遵循Xty Y惯例的特殊名称)。

一旦你有这个,它应该很容易达到99

一旦你有这个,那么达到999

是微不足道的

一旦你拥有了这个,你甚至无法将你的数字分成十亿,百万,数千......并再次应用它。

快乐的编码!