7-23 币值转换(20 分)

输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。

输入格式:
输入在一行中给出一个不超过9位的非负整数。

输出格式:
在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。

输入样例1:
813227345

输出样例1:
iYbQdBcScWhQdBeSf

输入样例2:
6900

输出样例2:
gQjB

**这是一个我自认为是对的程序 **

updated:解决了输入0;

说到这我突然想起来这段代码还有不健全的地方就是”10“应该是”十“而不是”一十“,而其他情况都是”一十“,我还没考虑前者。不过测试点没这个,侥幸过了2333 。我回去小改一下。

//原来我出错的测试点是输入0的时候#include <iostream>
#include <string>
#include <cstring>
using namespace std;//字符->数字
inline int toNum(char c) {return static_cast<int>(c-'0');
}int ecx(string &s) {if(s.size()==9) {//考虑到这种情况100000001,这里的”万“是没有的,即,壹亿零壹//而除了这种情况,大于9999的时候必有”万“if(s[1]=='0' && s[2]=='0' && s[3]=='0' && s[4]=='0') {return 1;}else return 0;}else return 0;
}
int main() {int index1,index2,temp=-1, h=0;string input;cin >> input;char res[30];memset(res,'\0',sizeof(char)*30);char num[10]={'a','b','c','d','e','f','g','h','i','j'};char unit[10]={'\0','\0','S','B','Q','W','S','B','Q','Y'};auto len = input.size();//这里零都会重复,且除了零之外每一位都有后接的单位for(auto i=0; i!=len; ++i) {char c=num[toNum(input[i])];res[h] = c;if((c!='a' && i!=len-1) || (len-i==5 && !ecx(input)))res[++h] = unit[len-i];++h;}//index1记录从后往前数不为零的地方,并忽略之//解决”63000“此类的问题for(int i=strlen(res)-1; i>=0; --i) {if(res[i]!='a') {index1 = i+1;break;}}//此处记录在res中”万“的位置,没有的话就是原值-1for(int i=strlen(res)-1; i>=0; --i) {if(res[i]=='W') {temp = i;break;}}//与之前原理类似,从”十万“位开始找,找到第一个不是0的//解决了这种情况”69000000“,不处理这个的话,会变成六千九百零万if(temp!=-1) {for(int i=temp-1; i>=0; --i) {if(res[i]!='a') {index2 = i+1;break;}}}//前面的两句控制前面的情况,输出的时候控制如果此时是0,下一个不是0就输出一个零for(int i=0; i<strlen(res); ++i) {//当只有一位的时候,有情况0,如果不单列,就会没有结果if(i==index1 && lenRes!=1) break;if(temp!=-1) {if(i>=index2 && i<temp) continue;}if(res[i]=='a' && res[i+1]!='a') {cout<<'a';}if(res[i]!='a') cout<<res[i];}return 0;
}

代码写的很糟糕,通用性较差,但AC总有一测试点过不去,遂查询,发现有一个类似的疑问:[一亿零零一???](http://blog.csdn.net/ccDLlyy/article/details/52070666)

来自ccDLlyy的博客

不知是不是bug了。

是我naive了!

[PTA] 7-23 币值转换(20 分)相关推荐

  1. 7-168 币值转换 (20 分)

    7-168 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为 ...

  2. 7-83 币值转换 (20 分)

    7-83 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了 ...

  3. 7-83 币值转换 (20分)

    整了3个小时终于做出来了(我是菜鸡,大佬们别喷),初始的时候解题方向整错了:我把单位和数字放在一起输出了,导致以我现在能力无法正确表达出汉字的习惯.意识到可能需要重写代码,就看了下网上的答案,大体思路 ...

  4. 7-23 币值转换 (20分)

    7-23 币值转换 (20分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简 ...

  5. 【Java】7-23 币值转换 (20 分)

    7-23 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了 ...

  6. PTA 7-43 币值转换 (20 分)

    题目 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a- ...

  7. 7-43 币值转换 (20分)_「篮球看吧」40岁了!生涯25年!还狂砍33分+联赛得分王,这他么是人吗...

    35岁的詹姆斯仍处在巅峰,让无数人惊讶.40岁的时候詹皇会是什么样子?现在詹皇有了一个参照样本,那就是40岁的斯科拉.这位阿根廷球星在迈入四旬依然能称霸欧洲顶级联赛,目前在意大利甲级篮球联赛得分榜排名 ...

  8. java币值转换_-PAT-java-5-23 币值转换 (20分)

    输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序 ...

  9. 7-4 币值转换 (20分)

    输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序 ...

  10. 币值转换 (20分)

    输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序 ...

最新文章

  1. 2019-2020中国趋势报告,203页PPT解读16大机会
  2. python正态检验_Python怎么检验数据的正态分布
  3. 关于清单,有几点我觉得比较重要。
  4. SpringBoot创建项目入门案例
  5. oracle之trunc(sysdate)
  6. java mail 接受QQ邮箱未读的邮件
  7. django 设置媒体url_编写第一个 django 应用
  8. python全栈学习路线-查询笔记
  9. 8.Nginx 例子
  10. 模拟京东登陆 java_java-爬虫部分:关于京东模拟登陆的两种实现 | 学步园
  11. vue结合echarts开发柱状图+折线图合并的图表
  12. 浅谈核桃的栽培技术与种植管理方法
  13. 水仙花数n位c语言程序,水仙花数C语言的
  14. 01.初识redis
  15. Arcgis Engine 切割图斑(ITool)
  16. python 拆分excel工作表_使用python拆分excel单元格方法
  17. go结构体初始化_浅谈golang结构体偷懒初始化
  18. PDPS软件:碰撞检测功能介绍与使用方法
  19. 金立android怎么升级包,金立S6升级刷机教程[多图]
  20. 多开技术的出现发挥了什么作用?

热门文章

  1. solor快速_1. SOLR处理实时推荐篇
  2. 翻转英文语句中单词的顺序
  3. 你所不知道的AWS 云服务清单(71种)
  4. Python黑魔法--异步IO(asyncio)协程 (三)
  5. 2021某厂的数据分析面试题python
  6. 数据仓库(四)之ETL开发
  7. 使用 CSS Grid Generator来快速使用及学习 Grid 布局
  8. 新能源——插混、油混、增程
  9. mac os苹果操作系统安装docker和oracle 11g
  10. 诺华苏州研发基地全面升级;丹纳赫96亿美元收购生物技术公司Aldevron | 医药健闻...