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
这道题集中在“0”和“万”上的坑还挺多的,重点是根据PTA的答案一步步完善自己的代码,有很多细节一开始是想不到的。属于方法不难但是细枝末节非常麻烦的题目。
#include<iostream>
//①从count开始后缀为0,不发声(但要警惕类似1300000的,不要忘记补上“万”)
//②0只发零不带权值
//③中间连续的0只发一个音
//④不要忘记最小的个位数0
using namespace std;
int main (void){
int n;
cin>>n;
if(n==0){
cout<<'a';
return 0;
}
int s[9];
for(int i=0;i<9;i++)s[i]=-1;//数组统一赋初值
int flag=1;//标记末尾的0
int count=<

该博客介绍如何将输入的不超过9位的非负整数(代表人民币元)转换为财务要求的大写中文格式。通过特定的字符映射,如'a'到'j'代表0到9,'S'、'B'等代表拾、佰等单位,将数字转换为字符串输出。文章强调了处理“零”和“万”等特殊情况的挑战,并提示需要根据PTA提供的答案逐步改进代码。
3809

被折叠的 条评论
为什么被折叠?



