定义一个函数,处理每三位数字的英文翻译,然后调用这个函数加上相应的单位输出即可。
#include <iostream>
using namespace std;
string transform(int number);
int main() {
long n;
cin >> n;
int number = n % 1000;
string temp;
temp += transform(number);
n /= 1000;
if (n > 0) {
number = n % 1000;
if (temp != "") {
temp = transform(number) + " thousand " + temp;
} else if (transform(number) != "") {
temp += transform(number) + " thousand";
}
}
n /= 1000;
if (n > 0) {
if (temp != "") {
temp = transform(n) + " million " + temp;
} else if (transform(n) != "") {
temp += transform(n) + " million";
}
}
cout << temp;
return 0;
}
string transform(int number) {
string ans;
int decade = number % 100;
string temp;
if (decade >= 10 && decade <= 19) {
switch(decade) {
case 10:
ans += "ten";
break;
case 11:
ans += "eleven";
break;
case 12:
ans += "twelve";
break;
case 13:
ans += "thirteen";
break;
case 14:
ans += "fourteen";
break;
case 15:
ans += "fifteen";
break;
case 16:
ans += "sixteen";
break;
case 17:
ans += "seventeen";
break;
case 18:
ans += "eighteen";
break;
case 19:
ans += "nineteen";
break;
}
} else {
int unit = decade % 10;
switch(unit) {
case 1:
ans += "one";
break;
case 2:
ans += "two";
break;
case 3:
ans += "three";
break;
case 4:
ans += "four";
break;
case 5:
ans += "five";
break;
case 6:
ans += "six";
break;
case 7:
ans += "seven";
break;
case 8:
ans += "eight";
break;
case 9:
ans += "nine";
break;
}
decade = decade / 10;
switch(decade) {
case 2:
temp = "twenty";
break;
case 3:
temp = "thirty";
break;
case 4:
temp = "forty";
break;
case 5:
temp = "fifty";
break;
case 6:
temp = "sixty";
break;
case 7:
temp = "seventy";
break;
case 8:
temp = "eighty";
break;
case 9:
temp = "ninety";
break;
}
if (ans != "" && temp != "") {
ans = temp + ' ' + ans;
} else if (temp != "") {
ans += temp;
}
}
int hundred = number / 100;
temp.clear();
switch(hundred) {
case 1:
temp = "one hundred";
break;
case 2:
temp = "two hundred";
break;
case 3:
temp = "three hundred";
break;
case 4:
temp = "four hundred";
break;
case 5:
temp = "five hundred";
break;
case 6:
temp = "six hundred";
break;
case 7:
temp = "seven hundred";
break;
case 8:
temp = "eight hundred";
break;
case 9:
temp = "nine hundred";
break;
}
if (ans != "" && temp != "") {
ans = temp + " and " + ans;
} else if (temp != "") {
ans += temp;
}
return ans;
}
// 64 位输出请用 printf("%lld")



京公网安备 11010502036488号