华为OJ——学英语

来源:互联网 发布:保利科技 工作 知乎 编辑:程序博客网 时间:2024/04/29 23:51

学英语

题目描述

Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文:

22twenty two123one hundred and twenty three

说明:

数字为正整数,长度不超过十位,不考虑小数,转化结果为英文小写;

输出格式为twenty two

非法数据请返回“error”

关键字提示:andbillionmillionthousandhundred

方法原型:public static String parse(long num) 

输入描述:

输入一个long型整数

输出描述:

输出相应的英文写法

输入例子:

2356

输出例子:

two thousand three hundred and fifty six

解答代码:

#include<iostream>#include<vector>#include<cstdio>#include<string>#include<map>#include<cstring>#include<cstdlib>using namespace std;map<int,string> m;string num1[10]= {"zero","one","two","three","four","five","six","seven","eight","nine"};string change(string s){    string result="";    char ss[4]="";    int i=0,index=0;    //去掉S所有的前缀‘0’    for(i=0; i<s.length()&&s[i]=='0'; i++);    for(; i<s.length(); i++)        ss[index++]=s[i];    ss[index]='\0';    int length=strlen(ss);    int data=atoi(ss);    if(length==3)    {        result+=num1[data/100];        data=data%100;        if(data>0)        {            result+=" hundred and ";            if((data>=10 && data<=20) || data==30||data==40||data==50||data==60||data==70||data==80||data==90)                result+=m[data];            else if(data>20 && data<=99)            {                result+=m[(data/10)*10];                if(data%10!=0)                {                    result+=" ";                    result+=num1[data%10];                }            }            else                result+=num1[data];        }        else result+=" hundred";    }    else if(length==2)    {        if((data>=10 && data<=20) || data==30||data==40||data==50||data==60||data==70||data==80||data==90)            result+=m[data];        else if(data>20 && data<=99)        {            result+=m[(data/10)*10];            if(data%10!=0)            {                result+=" ";                result+=num1[data%10];            }        }        else            result+=num1[data];    }    else if(length==1 && data!=0)    {        result+=num1[data];    }    return result;}int main(){    string data;    m.insert(pair<int,string>(10,"ten"));    m.insert(pair<int,string>(11,"eleven"));    m.insert(pair<int,string>(12,"twelve"));    m.insert(pair<int,string>(13,"thirteen"));    m.insert(pair<int,string>(14,"fourteen"));    m.insert(pair<int,string>(15,"fifteen"));    m.insert(pair<int,string>(16,"sixteen"));    m.insert(pair<int,string>(17,"seventeen"));    m.insert(pair<int,string>(18,"eighteen"));    m.insert(pair<int,string>(19,"ninetee"));    m.insert(pair<int,string>(20,"twenty"));    m.insert(pair<int,string>(30,"thirty"));    m.insert(pair<int,string>(40,"forty"));    m.insert(pair<int,string>(50,"fifty"));    m.insert(pair<int,string>(60,"sixty"));    m.insert(pair<int,string>(70,"seventy"));    m.insert(pair<int,string>(80,"eighty"));    m.insert(pair<int,string>(90,"ninety"));    while(cin>>data)    {        if(data.length()>10)        {            cout<<"error"<<endl;            continue;        }        else        {            if(data.length()>9)            {                string temp1=data.substr(0,1);                //cout<<temp1<<endl;                data=data.substr(1,data.length());                string result1=change(temp1);                if(result1.length()!=0)                    cout<<result1<<" billion ";            }            if(data.length()>6)            {                string temp2=data.substr(0,data.length()-6);                //cout<<temp2<<endl;                data=data.substr(data.length()-6,data.length());                string result2=change(temp2);                if(result2.length()!=0)                    cout<<result2<<" million ";            }            if(data.length()>3)            {                string temp3=data.substr(0,data.length()-3);                //cout<<temp3<<endl;                data=data.substr(data.length()-3,data.length());                string result3=change(temp3);                if(result3.length()!=0)                    cout<<result3<<" thousand ";            }            if(data.length()>0)            {                //cout<<data<<endl;                string result4=change(data);                if(result4.length()!=0)                    cout<<result4;            }            cout<<endl;        }    }    return 0;}

0 0
原创粉丝点击