数字到单词的转换

该算法会将给定的数字转换为英文单词。像564会是五百六十四。 

对于这个算法,给出了一些预定义的字符串,从这个列表中,它会得到合适的词来组成词。

列表就像

  •  单位:它将包含 (0 到 9) 的所有单词,例如零、一……九

  •  twoDigits:它将保存从 (10 - 19) 的所有数字,例如 10、11…19

  • tenMul:十倍数,(20-90),比如二十、三十、……九十。

  • tenPower:十万的幂为 10 的 2 和 3

输入和输出

Input:

The number: 568

Output:

Five Hundred And Sixty Eight

算法

numToWord(num)

有一些列表包含不同整数的单词

输入:数字。

输出:将数字表示为单词。

Begin

   if n >= 0 and n < 10, then

      display units(n) into words

   else if n >= 10 and n < 20, then

      display twoDigitNum(n) into words         //从十到十九

   else if n >= 20 and n <100, then

      display tensMultiple(n/10), into words

      if n mod 10 ≠ 0, then

         numToWord(n mod 10)

   else if n >= 100 and n < 1000, then

      display units(n/100), into words

      display “Hundred”, into words      //Hundred

      if n mod 100 ≠ 0, then

         display “And”

         numToWord(n mod 100)

      else if n >= 1000 and n <= 32767, then

         numToWord(n/1000)

         display “Thousand”

         if n mod 1000 ≠ 0, then

            numToWord(n mod 1000)

      else

         display invalid number and exit

End

示例

#include<iostream>

using namespace std;

string getUnit(int n) {

    //将单个数字返回到单词

   string unit[10] = {"Zero", "One","Two", "Three","Four","Five", "Six","Seven","Eight","Nine"};

   return unit[n];

}

string getTwoDigits(int n) {

   //这里 n 是 2 位数字

   string td[10] = {"Ten", "Eleven","Twelve","Thirteen", "Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"};

   return td[n%10];

}

string getTenMul(int n) {

   //这里 n 是 10 的倍数

   string tm[8] = {"Twenty", "Thirty","Fourty", "Fifty","Sixty", "Seventy","Eighty","Ninty"};

   return tm[n-2];

}

string getTenPow(int pow) {

   //十的力量

   string power[2] = {"Hundred", "Thousand"};

   return power[pow-2];

}

void printNumToWord(int n) {

   if(n >= 0 && n < 10)

      cout << getUnit(n) << " ";      //单位值到字

   else if(n >= 10 && n < 20)

      cout << getTwoDigits(n) << " ";       //从十一到十九

   else if(n >= 20 && n < 100) {

      cout << getTenMul(n/10)<<" ";

      if(n%10 != 0)

         printNumToWord(n%10); //递归调用将 num 转换为 word

   }else if(n >= 100 && n < 1000) {

      cout << getUnit(n/100)<<" ";

      cout <<getTenPow(2) << " ";

      if(n%100 != 0) {

         cout << "And ";

         printNumToWord(n%100);

      }

   }else if(n >= 1000 && n <= 32767) {

      printNumToWord(n/1000);

      cout <<getTenPow(3)<<" ";

      if(n%1000 != 0)

         printNumToWord(n%1000);

   }else

      printf("Invalid Input");

}

main() {

   int number;

   cout << "输入 0 到 32767 之间的数字: "; cin >> number;

   printNumToWord(number);

}

输出结果
输入 0 到 32767 之间的数字: 568

Five Hundred And Sixty Eight

以上是 数字到单词的转换 的全部内容, 来源链接: utcz.com/z/351655.html

回到顶部