描述
Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文:
如22:twenty two,123:one hundred and twenty three。

说明:
数字为正整数,长度不超过十位,不考虑小数,转化结果为英文小写;
输出格式为twenty two;
非法数据请返回“error”;
关键字提示:and,billion,million,thousand,hundred。

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

知识点 字符串,循环,函数,指针,枚举,位运算,结构体,联合体,文件操作,递归
运行时间限制 10M
内存限制 128
输入
输入一个long型整数
输出
输出相应的英文写法
样例输入 2356
样例输出 two thousand three hundred and fifty six

#include <iostream>
#include <string>
using namespace std;
string NUmberToEnglishString(long int number)
{  string s;  if(number<0)  {  s="error";  return s;  }  if(number<20)  {  switch (number)  {  case 0:  s="zero";  return s;  case 1:  s="one";  return s;  case 2:  s="two";  return s;  case 3:  s="three";  return s;  case 4:  s="four";  return s;  case 5:  s="five";  return s;  case 6:  s="six";  return s;  case 7:  s="seven";  return s;  case 8:  s="eight";  return s;  case 9:  s="nine";  return s;  case 10:  s="ten";  return s;  case 11:  s="eleven";  return s;  case 12:  s="twelve";  return s;  case 13:  s="thirteen";  return s;  case 14:  s="fourteen";  return s;  case 15:  s="fifteen";  return s;  case 16:  s="sixteen";  return s;  case 17:  s="seventeen";  return s;  case 18:  s="eighteen";  return s;  case 19:  s="nineteen";  return s;  default:  s="error";  return s;  }  }  if(number<100)   //21-99  {  if (number % 10 == 0) //20,30,40,...90的输出  {  switch (number)  {  case 20:  s="twenty";  return s;  case 30:  s="thirty";  return s;  case 40:  s="forty";  return s;  case 50:  s="fifty";  return s;  case 60:  s="sixty";  return s;  case 70:  s="seventy";  return s;  case 80:  s="eighty";  return s;  case 90:  s="ninety";  return s;  default:  s="error";  return s;  }  }  else  {  s=NUmberToEnglishString(number/10*10)+' '+NUmberToEnglishString(number%10);  return s;  }  }  if(number<1000)  //100-999  {  if(number%100==0)  {  s=NUmberToEnglishString(number/100)+" hundred";  return s;  }  else  {  s=NUmberToEnglishString(number/100)+" hundred and "+NUmberToEnglishString(number%100);  return s;  }  }  if(number<1000000)  //1000-999999   百万以下  {  if(number%1000==0)  {  s=NUmberToEnglishString(number/1000)+" thousand";  return s;  }  else  {  s=NUmberToEnglishString(number/1000)+" thousand "+NUmberToEnglishString(number%1000);  return s;  }  }  if(number<1000000000)   //十亿以下  {  if(number%1000000==0)  {  s=NUmberToEnglishString(number/1000000)+" million";  return s;  }  else  {  s=NUmberToEnglishString(number/1000000)+" million "+NUmberToEnglishString(number%1000000);  return s;  }  }  if (number<9999999999)  //十亿到99亿  {  if(number%1000000000==0)  {  s=NUmberToEnglishString(number/1000000000)+" billion";  return s;  }  else  {  s=NUmberToEnglishString(number/1000000000)+" billion "+NUmberToEnglishString(number%1000000000);  return s;  }  }  if (number>9999999999)  {  s="error";  return s;  }  }
int main()
{  long int a;  cin>>a;  cout<<NUmberToEnglishString(a)<<endl;  }  

华为oj初级 学英语相关推荐

  1. 华为OJ 初级:人民币转换

    描述 考试题目和要点:1.中文大写金额数字前应标明"人民币"字样.中文大写金额数字应用壹.贰.叁.肆.伍.陆.柒.捌.玖.拾.佰.仟.万.亿.元.角.分.零.整等字样填写.(30分 ...

  2. 华为OJ 初级:合并表记录

    描述 数据表记录包含表索引和数值.请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和 函数说明:public int mergeRecord(List oriList, List rst ...

  3. 华为oj初级 求解立方根

    描述 •计算一个数字的立方根,不使用库函数 详细描述: •接口说明 原型: public static double getCubeRoot(double input) 输入:double 待求解参数 ...

  4. 华为oj初级 字符逆序

    描述 将一个字符串str的内容颠倒过来,并输出.str的长度不超过100个字符. 如:输入"I am a student",输出"tneduts a ma I" ...

  5. 华为oj初级 密码强度等级

    描述 密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分. 一.密码长度: 5 分: 小于等于4 个字符 10 分: 5 到7 字符 25 分: 大于等于8 个字符 二.字母: 0 分: ...

  6. 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...

  7. 【华为OJ】【042-矩阵乘法】

    [华为OJ][算法总篇章] [华为OJ][042-矩阵乘法] [工程下载] 题目描述 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C. 这个矩阵的每个元 ...

  8. 【华为OJ】【067-求最小公倍数】

    [华为OJ][算法总篇章] [华为OJ][067-求最小公倍数] [工程下载] 题目描述 正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数. ...

  9. C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...

最新文章

  1. AngularJS 初始化加载流程
  2. Cisco呼吁Arista停止在美国销售产品
  3. poj 3461 Oulipo(kmp统计子串出现次数)
  4. Spring boot的Spring MVC自动配置原理
  5. 信息学奥赛一本通 2064:【例2.1】交换值
  6. mysql 添加删除权限_MySQL实例讲解:添加账户、授予权限、删除用户
  7. 1、webpack入门例子。
  8. asp.net oracle连接数据库,通过ASP.NET连接Oracle数据库实例教程
  9. 华为PUSH推送所有Token都不合法
  10. Java实现Word转PDF【完整版】
  11. echarts饼图pie中间显示总数
  12. 魅族手机调试出现is waiting for debugger的问题解决
  13. 前端工程的价值体现在哪里
  14. 路由(gorilla/mux)
  15. 亲自传授我的各种经典的篮球技术动作gif图
  16. SDNU 1270.超超的难题
  17. Nodejs的安装随笔
  18. Python-从笛卡尔坐标插值到极坐标
  19. 《MongoDB入门教程》第15篇 文档更新之$inc操作符
  20. IBinder跨进程通信

热门文章

  1. 通过Transporter迁移MongoDB 数据至elasticsearch
  2. Java基础:01Java语言概述(常见的DOS命令,Java语言的特点、核心机制、环境搭建,HelloWorld,注释,Java API 文档)
  3. 阅读text2sql论文《RAT-SQL: Relation-Aware Schema Encoding and Linking for Text-to-SQL Parsers》
  4. relative absolute实例讲解
  5. 一个不错的金蝶KIS专业版条码扫描插件
  6. 小米WIFI恢复出厂设置方法
  7. wps的高亮怎么用_WPS表格高亮显示重复项功能的使用及其不足介绍与改进
  8. Excel只对列上指定内容进行序号累加的操作
  9. VBA 类模块理解和使用总结
  10. Linux的一些简单命令操作,好懂易学(1)