写代码使得输入:45
输出:forty five
如下:该题主要用到字符串转换的一些知识。
#include<iostream>
#include<string>
using namespace std;
// Converts a number from 10 to 99 into text.
string GetDigits(string Digits)
{
string Result;
Result = "" ;
int test = atoi(Digits.c_str());
switch(test)
{
case 1: Result = "One";break;
case 2: Result = "Two";break;
case 3: Result = "Three";break;
case 4: Result = "Four"; break;
case 5: Result = "Five"; break;
case 6: Result = "Six" ; break;
case 7: Result = "Seven"; break;
case 8: Result = "Eight"; break;
case 9: Result = "Nine"; break;
}
return Result;
}
string Right(string number)
{
string Result;
Result = "";
int i = number.length();
Result = number[i-1];
return Result;
}
string GetTens(string TensText)
{
string Result;
Result = "" ; //Null out the temporary function value.
int test = atoi(TensText.c_str());
if( TensText[0] == '1' ) //If value between 10-19...
{
switch(test)
{
case 10: Result = "Ten";break;
case 11: Result = "Eleven";break;
case 12: Result = "Twelve";break;
case 13: Result = "Thirteen";break;
case 14: Result = "Fourteen";break;
case 15: Result = "Fifteen";break;
case 16: Result = "Sixteen";break;
case 17: Result = "Seventeen";break;
case 18: Result = "Eighteen";break;
case 19: Result = "Nineteen";break;
default: break;
}
}
else
{
// If value between 20-99...
char first = TensText[0];
test = int(first-'0');
//也可是 test = atoi(&first);
switch(test){
case 2: Result = "Twenty ";break;
case 3: Result = "Thirty ";break;
case 4: Result = "Forty ";break;
case 5: Result = "Fifty ";break;
case 6: Result = "Sixty ";break;
case 7: Result = "Seventy ";break;
case 8: Result = "Eighty ";break;
case 9: Result = "Ninety ";break;
default:break;
}
}
string digits = GetDigits(Right(TensText));
Result = Result + digits;
return Result;
}
//对于位数的判断可以使用工厂模式
int main()
{
string t;
cin>>t;
if(t.length()>1)
cout<<GetTens(t).c_str();
else
cout<<GetDigits(t).c_str();
return 0;
}
使用到的函数
atoi : 从char*转到int
c_str: string的方法从string转到char *;