由一个小题看字符串转换
2012-04-25 21:19
113 查看
写代码使得输入: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 *;
输出: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 *;
相关文章推荐
- java小题, 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
- 在群里遇到一个小题
- 几个博弈小题总结 脑子是个好玩意,我也想有一个。
- CodeForces 697B Barnicle 和 Codeforce 691 C Puzzles 科学计数法的正逆互推 CodeForces 691B 一个对称的小题;
- 学习练习 java练习小题题目:判断一个整数能被几个9整除
- 一个关于JavaScript引用数据类型指针的小题
- 关于list一个很有意思的小题
- 一个有关神之数字的小题
- 优化:一个简单小题
- 关于一个数据库联合索引的小题
- 多态+this的一个小题
- 关于一个数据库联合索引的小题
- 一个面试小题(今年年初在团结湖面试的一个题目)
- c++的一个简单小题
- 二叉排序树的一个小题
- 算法小题二(求高次方程的一个实根2x^4-4x^3+6X^2-8x-8=0)
- 一道小题:从键盘输入一些字符,逐个把他们写入文件,直到输入一个#为止
- js的一个有意思的小题,闭包解决getElementByTagName的for循环绑定事件错误问题
- 又一个BLOG: HTTP://LAOXU.BLOGBUS.COM
- 开发一个网络学习游戏(抛砖引玉)