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

Kev*_*son 1 c numbers words

我有这个代码,将用英语单词打印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;
    }
Run Code Online (Sandbox Code Playgroud)

das*_*ght 6

这是一个良好的开端,但完成您的计划需要更多:

  • 首先将代码扩展为打印数字10..99.11..19会有一个特例,但在那之后它会非常规律.可以使用查找表来寻址较低的20.事实上,制作整个范围的查找表也不会太糟糕.
  • 通过编写数字0..99的例程,您可以通过查看右边的第三个数字,将其写出来,添加"hundred"并继续写出数字0..99来扩展到数百个
  • 现在你已经写了三位数字的所有你需要的是你的号码拆分成树组,调用这个例程非零组,并添加程序"billion","million"以及"thousand"对应于该组的秩.