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

时间:2016-06-23 13:49:45

标签: 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;
    }

2 个答案:

答案 0 :(得分:6)

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

  • 首先将代码扩展为打印数字10..99。 11..19会有一个特例,但在那之后它会非常规律。可以使用查找表来寻址较低的20。事实上,制作整个范围的查找表也不会太糟糕。
  • 通过编写数字0..99的例程,您可以通过查看右边的第三个数字,将其写出来,添加"hundred"并继续写出数字0来扩展到数百个。 0.99
  • 既然您有一个写出三位数字的例程,您只需要将您的号码分成树组,为非零组调用此例程,然后添加"billion",{{1} },和"million"对应于该组的排名。

答案 1 :(得分:2)

Here您可以解决问题。它甚至与您在此处粘贴的示例相同,因此如果您已阅读下面的评论,您已经看到了Bheema的评论形式,其中他发布了整个代码。

此外,您可以尝试编写自己的代码,但并不难。 dasblinkenlight为您提供了如何操作的说明。