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

Lisp 需要Scheme程序来打印数字的名称,lisp,scheme,racket,Lisp,Scheme,Racket,例如: 5513345 (电话号码:5513345) (伍佰伍拾壹万叁仟叁佰肆拾伍元) 我真的不知道该怎么做 我试着这么做,结果得到了一系列的案例陈述。该程序将成功打印出10以下整数的名称,但除此之外几乎没有其他功能 (define numname (lambda (n) (if (= n 0) 0 (cond ((= n 9) 'nine) ((= n 8) 'eight) ((=

例如:

5513345
(电话号码:5513345) (伍佰伍拾壹万叁仟叁佰肆拾伍元)

我真的不知道该怎么做

我试着这么做,结果得到了一系列的案例陈述。该程序将成功打印出10以下整数的名称,但除此之外几乎没有其他功能

(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))))) 

你在正确的轨道上。以你为例:

5513345
这是:

5 513 345
i、 e:

可写为:

                        five   million
five  hundred       thirteen   thousand
three hundred forty     five   (units)
看到一种模式出现了吗?您的方法适用于10以下的数字(实际上,您可能希望增加到19,因为10到20之间的数字具有特殊名称,而不遵循
Xty
约定)

一旦你有了这个,它应该很容易上升到99

一旦你有了这个,它是微不足道的上升到999

一旦你有了这个,把你的数字分成十亿、百万、数千甚至都不管用。。。并再次应用它


快乐编码

这看起来像家庭作业?你能做什么?你能打印出10以下数字的名字吗?把电脑放在一边一分钟,试着写出一个从十进制数到它的书面表示的算法。然后在Scheme中实现该算法。首先感谢您的回复。我试着按照你说的去做,结果得到了一系列的案例陈述。该程序将成功打印出10以下整数的名称,但除此之外几乎没有其他功能。定义numname(lambda(n)(如果)n0(cond(=n9)‘九’(=n8)‘八’(=n7)‘七’(=n6)‘六’(=n5)‘五’(=n4)‘四’(=n3)‘三’(=n2)‘二’(或者‘一’)(你知道吗?你是怎么用手做的?当你需要从1234到1234时,你是怎么做到的?