作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

考试题目和要点:

1、中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。

2、中文大写金额数字到“元”为止的,在“元”之后,应写“整字,如532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。

3、阿拉伯数字中间有“0”时,中文大写要写“零”字,阿拉伯数字中间连续有几个“0”时,中文大写金额中间只写一个“零”字,如6007.14,应写成“人民币陆仟零柒元壹角肆分“。

4、10应写作“拾”,100应写作“壹佰”。例如,1010.00应写作“人民币壹仟零拾元整”,110.00应写作“人民币壹佰拾元整”

5、十万以上的数字接千不用加“零”,例如,30105000.00应写作“人民币叁仟零拾万伍仟元整”

本题含有多组样例输入。

输入描述:

输入一个double数

输出描述:

输出人民币格式

示例:

输入:

151121.15
10012.02
13.64
0.85

输出:

人民币拾伍万壹仟壹佰贰拾壹元壹角伍分
人民币壹万零拾贰元贰分
人民币拾叁元陆角肆分
人民币捌角伍分

解题思路:

这题主要理解起来麻烦,一点点剖开就是个数字解析成字符串的问题。

1)首先输入数字后,将数字按照小数点前后分为前子串和后子串;若前子串为0,说明钱只跟角和分有关,如果后子串也是0,那就输出零元整,若后一位为0,那就输出零几分,后第二位为0,输出几角,两个都不为0,就是几角几分。

2)这个步骤是代码if(t2!=1)里的操作。若前子串不为0,则从最开头一位位分析,先对前子串尺寸分析,t1表示尺寸除4,t2表示尺寸余4,当t2不为1时,说明该位不是万、亿、万亿这级,那就继续分析,连续两个0就消除一个0,只有1个0就输出一个零字,若是十几,就输出拾几,若是几十,就输出对应汉字。

3)这个步骤是代码if(t2!=1)对应的else里的操作。此时t2为1,说明后面该跟万、亿这种,如果该位不是0,就输出对应汉字加级数(万、亿);若为0,则直接输出级数。

4)最后,再输出后子串的内容,即几角几分。

测试代码:

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>using namespace std;vector<string> nums={ "零","壹","贰","叁","肆","伍","陆","柒","捌","玖" };
vector<string> unit1={ "元","万","亿" ,"万","亿" };
vector<string> unit2={ "仟"," ","拾","佰" };int main()
{double money;while(cin>>money){cout<<"人民币";string sm=to_string(money);int index=sm.find('.');string mf=sm.substr(0,index);string mb=sm.substr(index+1);if(mf=="0"){if(mb[0]=='0'&&mb[1]=='0')cout<<"零元整";else if(mb[1]=='0')cout<<nums[mb[0]-'0']<<"角";else if(mb[0]=='0')cout<<"零"<<nums[mb[1]-'0']<<"分";elsecout<<nums[mb[0]-'0']<<"角"<<nums[mb[1]-'0']<<"分";cout<<endl;continue;}while(mf.size()){int t1=mf.size()/4;int t2=mf.size()%4;if(t2!=1){if(mf[0]=='0'){if(mf[1]=='0'){mf=mf.substr(1);continue;}else{cout<<nums[0];}}else{if(mf[0]-'0'==1&&t2==2)cout<<unit2[t2];else{cout<<nums[mf[0]-'0']<<unit2[t2];}}}else{if(mf[0]=='0'){cout<<unit1[t1];}else{cout<<nums[mf[0]-'0']<<unit1[t1];}}mf=mf.substr(1);}if(mb[0]=='0'&&mb[1]=='0')cout<<"整";else if(mb[1]=='0')cout<<nums[mb[0]-'0']<<"角";else if(mb[0]=='0')cout<<nums[mb[1]-'0']<<"分";elsecout<<nums[mb[0]-'0']<<"角"<<nums[mb[1]-'0']<<"分";cout<<endl;}return 0;
}

华为机试HJ95:人民币转换相关推荐

  1. 华为机试——进制转换

    题目描述 写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串.(多组同时输入 ) 输入描述: 输入一个十六进制的数值字符串. 输出描述: 输出该数值的十进制字符串. 示例1 输入 0 ...

  2. 牛客网–华为机试在线训练5:进制转换

    牛客网–华为机试在线训练5:进制转换 题目描述 写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串.(多组同时输入 ) 输入描述: 输入一个十六进制的数值字符串. 输出描述: 输出该 ...

  3. 【华为机试真题 Python实现】字串转换 a->b,b->c

    文章目录 前言 题目描述 示例 1 示例 2 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了解的可以私信我,我会 ...

  4. Java算法:华为机试算法(下),华为算法Java版,牛客网华为算法73~108题

    接上篇:Java算法:华为机试算法(中),华为算法Java版,牛客网华为算法55~72题   HJ73 计算日期到天数转换 计算日期到天数转换 题目描述 根据输入的日期,计算是这一年的第几天.. 测试 ...

  5. 华为机试108题(C 语言解答)

    Nowcoder题库链接:华为机试 HJ1 字符串最后一个单词的长度(字符串) 输入:hello nowcoder输出:8说明: 最后一个单词为nowcoder,长度为8 示例代码: HJ1.c #i ...

  6. (python)牛客网(华为机试四)——较难

    本博客为博主解题的部分记录,由于均为自己写的,所以答案并非最优解,有很多地方可以优化. 其他题解合集: (python)牛客网(华为机试一)--入门 (python)牛客网(华为机试二)--简单 (p ...

  7. 【华为机试 Python实现】华为机试题集合(已更新171篇)

    文章目录 新手指引 数据结构基础 华为机试真题系列 牛客网华为机试系列 Python 八股文系列 <华为机试真题详解>专栏定价99.9 包含 <华为机试真题>的所有题目. 包含 ...

  8. 【强烈推荐收藏】坚持3个月爆肝华为机试108题C++全解(适合新手入门,就业必刷套题)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 金九银十,金三银四.当前正处于校招.社招的火热期,之前就想为正在筹备就业的同学们准备刷题宝 ...

  9. 【华为机试】死记硬背没思路?一般人我劝你还是算了吧

    大家好,我是哪吒. 五月份之前,如果你参加华为OD机试,收到的应该是2022Q4或2023Q1,这两个都是A卷题. 5月10日之后,很多小伙伴收到的是B卷,那么恭喜你看到本文了,抓紧刷题吧.B卷新题库 ...

最新文章

  1. 【Qt】Qt样式表总结(四):CSS盒子模型
  2. 微软ASP.NET MVC Beta版本发布
  3. php 运行外部程序_php 中运行外部程序的一个潜在风险
  4. python中and与or的执行顺序-python之执行顺序随记
  5. Android 计算布局背景的透明度
  6. 并发的发展历史-集成电路和多道程序设计
  7. mac中安装activeMQ
  8. 华为鸿蒙系统真的好吗,鸿蒙系统真的成熟吗?华为还有很长的路要走
  9. 首页终于让百度放出来了
  10. Unity打开的文件是杂项文件的处理方法
  11. [hgoi#2019/2/16t1]math
  12. 开源的“谷歌AutoML杀手”来了
  13. cent os 查看服务器信息
  14. 第四届组织医学与再生医学国际学术研讨会(CTERM-BT 2019)
  15. 微型计算机任务名称,任务五微型计算机的硬件组成.ppt
  16. 有一分数序列:2/1,3/2,5/3...求出这个数列的前20项之和(C语言原理详解)。
  17. PS中改变人物衣服图案
  18. oracle-DDL对表的操作
  19. SVM支持向量机算法做预测,matlab,预测精度非常高
  20. 计算机和学生的关系的英语作文,学生和老师的关系的英文作文

热门文章

  1. dedecms调用日期格式化形式大全
  2. 浅谈linux线程模型和线程切换
  3. 【18】Python半成品购物车
  4. asp.net 调用(引用 Native dll 的)C++/CLI dll 的问题及解决
  5. 写出好的 commit message
  6. 14-2 正则表达式
  7. socket编程(十)
  8. oracle 10g安装企业版,企业版Oracle10g的安装-过程
  9. Python:PyCharm选择性忽略PEP8警告
  10. QT禁用“最大化按钮“和“禁止调节窗口大小“