直接copy别人的感觉他的程序很直观很好理解,具体那位大神的链接忘了,勿怪!
注意事项:
对于什么时候加‘and’请注意!
举个例子 110 ------ one hundred and ten
101 ------ one hundred and one
1001 ------ one hundred one
#include <iostream>
#include <string>
using namespace std;
string s1[20] = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
string s3[10] = { "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };
string lessThan100(long num)
{
string result;
if (num < 20)
result = s1[num - 1];
else if (num <100 && num % 10 == 0)
result = s3[num / 10 - 2];
else if (num <100)
result = s3[num / 10 - 2] + " " + s1[num % 10 - 1];
return result;
}
string lessThan1000(long num)
{
string result;
if (num < 100)
result = lessThan100(num);
else if (num % 100 == 0)
result = s1[num / 100 - 1] + " hundred";
else
result = (s1[num / 100 - 1] + " hundred and " + lessThan100(num % 100));
return result;
}
string lessThanMillion(long num)
{
string result;
if (num < 1000)
result = lessThan1000(num);
else if (num % 1000 == 0)
result = lessThan1000(num / 1000) + " thousand";
else
result = lessThan1000(num / 1000) + " thousand " + lessThan1000(num % 1000);
return result;
}
string lessThanBillion(long num)
{
string result;
if (num <1000000)
result = lessThanMillion(num);
else if (num % 1000000 == 0)
result = lessThanMillion(num / 1000000) + " million";
else
result = lessThanMillion(num / 1000000) + " million " + lessThanMillion(num % 1000000);
return result;
}
string parse(long num)
{
string result;
if (num <= 0 || num >= 10000000000)
result = "ERROR";
else if (num < 1000)
result = lessThan1000(num);
else if (num < 1000000)
result = lessThanMillion(num);
else if (num <1000000000)
result = lessThanBillion(num);
else if (num == 1000000000)
result = "one billion";
else
result = s1[num / 1000000000 - 1] + " billion " + lessThanBillion(num % 1000000000);
return result;
}
int main()
{
long num = 0;
cin >> num;
cout << parse(num);
return 0;
}
结论 这种分而治之的方法很好用,而且思路很清晰!!!