数字到单词的转换
该算法会将给定的数字转换为英文单词。像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输出结果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 < = 1000 && n <= 32767) { printNumToWord(n/1000); cout < > number; printNumToWord(number); }
输入0到32767之间的数字: 568 Five Hundred And Sixty Eight