推荐说面试题
推荐道面试题
1,实现如下函数:返回字符串为输入数字的语音读法。
std::string readNum(unsigned int uNum)
{//输入为参数数据类型范围内的所有可能的数字。
}
例如:
输入1402应返回“YiBaiSiShiLingEr"
输入609830023应返回“LiuYILingJiuBeiBaShiSanWanLingErShiSan"
要求完成时间小于2小时。自己验证用例不少于都10个。
2,与上相反,输入字符串输出数字:
unsigned int uNum getNum(const std::string& strPL)
{//输入字符串由如下Word组成:
//Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu,Shi,Bai,Qian,Wan,YI
}
例如:
输入“YiBaiSiLingEr"应返回1402
输入“LiuYiLingJiuBeiBaShiSanWanLingErShiSan"应返回609830023
要求完成时间小于2小时。自己验证用例不少于都10个。
------解决方案--------------------
1,实现如下函数:返回字符串为输入数字的语音读法。
std::string readNum(unsigned int uNum)
{//输入为参数数据类型范围内的所有可能的数字。
}
例如:
输入1402应返回“YiBaiSiShiLingEr"
输入609830023应返回“LiuYILingJiuBeiBaShiSanWanLingErShiSan"
要求完成时间小于2小时。自己验证用例不少于都10个。
2,与上相反,输入字符串输出数字:
unsigned int uNum getNum(const std::string& strPL)
{//输入字符串由如下Word组成:
//Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu,Shi,Bai,Qian,Wan,YI
}
例如:
输入“YiBaiSiLingEr"应返回1402
输入“LiuYiLingJiuBeiBaShiSanWanLingErShiSan"应返回609830023
要求完成时间小于2小时。自己验证用例不少于都10个。
------解决方案--------------------
- C/C++ code
#include "stdafx.h" #include <iostream> #include <vector> #include <string> using namespace std; vector<string> str; string weistr[4] = {"Shi","Bai","Qian","Wan"}; string numstr[10] = {"Lin","Yi","Er","San","Si","Wu","Liu","Qi","Ba","Jiu"}; void translation_shi(unsigned long s,bool flags)//flags变量指定是否要加Lin,比如102,是YiBaiLinEr { if (s == 0)return; if (s/10>=1) { str.push_back(numstr[s/10]); str.push_back(weistr[0]); if (s%10!=0) str.push_back(numstr[s%10]); } else { if (flags) str.push_back(numstr[0]); str.push_back(numstr[s]); } } void translation_bai(unsigned long b,bool flags) { if (b==0)return; if (b/100>=1) { str.push_back(numstr[b/100]); str.push_back(weistr[1]); translation_shi(b%100,true); } else { if (flags) str.push_back(numstr[0]); translation_shi(b,false); } } void translation_qian(unsigned long q,bool flags) { if (q==0)return; if (q/1000>=1) { str.push_back(numstr[q/1000]); str.push_back(weistr[2]); translation_bai(q%1000,true); } else { if (flags) str.push_back(numstr[0]); translation_bai(q,false); } } void translation_wan(unsigned long w) { if (w==0) { str.push_back(numstr[0]); return; } if (w/10000>=1) { translation_qian(w/10000,false); str.push_back(weistr[3]); translation_qian(w%10000,true); } else { translation_qian(w,false); } } int _tmain(int argc, _TCHAR* argv[]) { int n; while (cin>>n) { translation_wan(n); for (vector<string>::iterator i=str.begin(); i!=str.end(); ++i) { cout<<*i; } cout<<endl; str.clear(); } return 0; }