在 C 中将数字打印为英语单词

Printing numbers as English words in C

我有这段代码可以用英文单词打印从 0 到 9 的数字(比如一个代表 1,两个代表 2,等等)。如果我想打印 374 怎么办?或者更大的东西,比如 7549846451?

#include <stdio.h>
    int main() 
    {
        double sum;
        if(scanf("%1f",&num)!=0)
        {
            if(num=(int)num)
            {
                switch((int)sum)
                {
                    case 0:printf("zero\n");break;
                    case 1:printf("one\n");break;
                    case 2:printf("two\n");break;
                    case 3:printf("three\n");break;
                    case 4:printf("four\n");break;
                    case 5:printf("five\n");break;
                    case 6:printf("six\n");break;
                    case 7:printf("seven\n");break;
                    case 8:printf("eight\n");break;
                    case 9:printf("nine\n");break;
                    default:printf("not a digit"); break;
                }
            }else
            {
                printf("Invalid")
                    return 0;
            }
        }
        return 0;
    }

这是一个好的开始,但要完成您的程序还需要很多时间:

  • 首先将您的代码扩展为打印数字 10..99。 11..19 会有一个特殊情况,但之后就很正常了。较低的 20 个可以通过查找 table 来寻址。事实上,对整个范围进行查找 table 也不会太糟糕。
  • 通过手头写出数字 0..99 的例程,您可以通过查看右边的第三个数字、写出它、添加 "hundred",然后继续写出数字来扩展到数百0..99
  • 现在你已经有了一个写出三位数的例程,你所需要的就是将你的数字分成几组树,为非零组调用这个例程,然后添加 "billion""million",和"thousand"对应组的排名。

Here 您已找到解决问题的方法。它甚至与您在此处粘贴的示例相同,所以如果您阅读了下面的评论,您就会看到 Bheema 的评论表,他在其中发布了完整的代码。

另外,你可以试试自己写代码,没那么难。 dasblinkenlight 为您提供了操作说明。