华为OJ——学英语
来源:互联网 发布:保利科技 工作 知乎 编辑:程序博客网 时间:2024/04/29 23:51
学英语
题目描述
Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文:
如22:twenty two,123:one hundred and twenty three。
说明:
数字为正整数,长度不超过十位,不考虑小数,转化结果为英文小写;
输出格式为twenty two;
非法数据请返回“error”;
关键字提示:and,billion,million,thousand,hundred。
方法原型: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
- 华为OJ——学英语
- 华为OJ——学英语
- 华为oj 学英语
- 华为OJ:学英语
- 华为OJ(学英语)
- 华为OJ之学英语
- 【华为OJ】【092-学英语】
- 华为OJ 初级:学英语
- 华为oj初级 学英语
- 【华为oj】学英语o(>﹏<)o
- 华为OJ基础题-学英语
- 华为OJ训练之0049-170223- 学英语
- 华为oj_学英语
- 华为OJ—四则运算
- 华为在线测试--学英语
- 华为机试---学英语
- 华为OJ——合唱队
- 华为OJ——合唱队
- C、C++中union用法总结
- Android studio启动时总是在找AndroidSDK的解决办法
- Android Studio入门
- 选择器的优先级
- VC与JavaScript交互(三) ———— JS调用C++
- 华为OJ——学英语
- matlab中自带的classification
- 华为OJ——迷宫问题
- Linux下离线手动下载安装C++开发环境
- 华为OJ——名字的漂亮度
- 桌面程序、图标到电脑左上角如何拽回
- 文本文件和二进制文件学习
- gentoo设置单个软件编译的CFLAGS参数和patches
- 老婆我会好好照顾你的!