首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

推荐说面试题

2012-06-24 
推荐道面试题1,实现如下函数:返回字符串为输入数字的语音读法。std::string readNum(unsigned int uNum){//

推荐道面试题
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;} 

热点排行