数字到单词的转换
该算法会将给定的数字转换为英文单词。像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)
有一些列表包含不同整数的单词
输入:数字。
输出:将数字表示为单词。
Beginif 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 之间的数字: 568Five Hundred And Sixty Eight
以上是 数字到单词的转换 的全部内容, 来源链接: utcz.com/z/351655.html