【c++】币值转换

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

大家好,我是讯享网,很高兴认识大家。

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

输入格式:

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

输出格式:

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

输入样例1:


讯享网

输出样例1:

讯享网iYbQdBcScWhQdBeSf

输入样例2


讯享网

6900

输出样例2

讯享网gQjB

搞了一个多小时终于弄出来了,用了一种实在是蠢得要死的方法,代码如下,不知道有没有更好的办法,以后再想想吧。

2.创建一个函数void change(char* str,int x);,将四位数转换成四个字符存入char数组当中。

3.创建一个函数void read(char* a);,将char数组按规则读出。

4.依次读出从c,b,a并在读c之后添加’Y’,读b之后添加’W’,读a之后什么也不添加。同时要注意读c、b、a之间需不需要添加’0’。

程序代码:

#include<iostream> #include<cstring> #include<cstdio> using namespace std; void read(char* a); void change(char* str,int x); char num[11]="abcdefghij"; int main() { char cap[10]="0SBQWSBQY"; char num[11]="abcdefghij"; unsigned int input; cin>>input; int x=input; int a=input%10000; input=input/10000; int b=input%10000; input=input/10000; int c=input%10000; char str1[5],str2[5],str3[5]; change(str1,a); change(str2,b); change(str3,c); read(str3); if(c!=0) cout<<'Y'; if(c!=0&&b<1000) cout<<'a'; read(str2); if(b!=0) cout<<"W"; if((b!=0||c!=0)&&a<1000) cout<<'a'; read(str1); if(x==0) cout<<'a'; return 0; } void read(char* a) { if(a[0]!='0') cout<<num[a[0]-'0']<<'Q'; if(a[1]!='0') cout<<num[a[1]-'0']<<'B'; else if(a[0]!='0'&&(a[2]!='0'||a[3]!='0')) cout<<'a'; if(a[2]!='0') cout<<num[a[2]-'0']<<'S'; else if(a[1]!='0'&&a[3]!='0') cout<<'a'; if(a[3]!='0') cout<<num[a[3]-'0']; } void change(char* str,int x) { str[3]=x%10+'0'; x=x/10; str[2]=x%10+'0'; x=x/10; str[1]=x%10+'0'; x=x/10; str[0]=x%10+'0'; }
小讯
上一篇 2025-02-11 07:29
下一篇 2025-02-25 19:03

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/35748.html