写一个c++程序代码,以实现用户输入两个数字(二十以内的整数)的英文单词,计算出二者乘积,并输出结果数字及结果的英文单词。要求:使用string类完成,可完成多次计算。
时间: 2023-06-18 11:05:48 浏览: 38
以下是一个实现上述功能的C++程序代码:
```c++
#include <iostream>
#include <string>
using namespace std;
string numToWord(int num) {
string ones[] = {"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
string tens[] = {"", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
string teens[] = {"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
if (num < 10) {
return ones[num];
} else if (num >= 10 && num < 20) {
return teens[num - 10];
} else if (num >= 20 && num < 100) {
return tens[num / 10] + (num % 10 != 0 ? " " + ones[num % 10] : "");
} else {
return "out of range";
}
}
int wordToNum(string word) {
string ones[] = {"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
string tens[] = {"", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
string teens[] = {"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
if (word == "zero") {
return 0;
} else if (word == "one") {
return 1;
} else if (word == "two") {
return 2;
} else if (word == "three") {
return 3;
} else if (word == "four") {
return 4;
} else if (word == "five") {
return 5;
} else if (word == "six") {
return 6;
} else if (word == "seven") {
return 7;
} else if (word == "eight") {
return 8;
} else if (word == "nine") {
return 9;
} else {
for (int i = 0; i < 10; i++) {
if (word == teens[i]) {
return 10 + i;
}
}
for (int i = 2; i < 10; i++) {
if (word == tens[i]) {
return i * 10;
}
}
return -1; // not a valid word
}
}
int main() {
string word1, word2;
int num1, num2;
while (true) {
cout << "Enter two numbers (up to 20): ";
cin >> word1 >> word2;
num1 = wordToNum(word1);
num2 = wordToNum(word2);
if (num1 == -1 || num2 == -1) {
cout << "Invalid input. Please enter valid numbers." << endl;
} else {
int product = num1 * num2;
string productWord = numToWord(product);
cout << "Product: " << product << " (" << productWord << ")" << endl;
}
}
return 0;
}
```
程序中使用了两个函数:`numToWord` 和 `wordToNum`,分别用于将数字转换成英文单词和将英文单词转换成数字。在 `main` 函数中,使用循环不断接收用户输入,并调用上述两个函数计算乘积并输出结果。如果用户输入的单词不是有效的数字单词,则程序会提示用户重新输入。