C++中文大写数字
答案:1 悬赏:40 手机版
解决时间 2021-07-30 18:12
- 提问者网友:难遇难求
- 2021-07-30 12:34
Description
我们在金融机构填写金额时使用的不是阿拉伯数字,而是中文的大写数字。
请写一个程序将数字转换为中文大写数字。
标准大写写法如下:零、壹、贰、参、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿
注意:由于测试系统中的编译器不直持汉字,所以0-9数字的中文大写还是0-9代表,“拾、佰、仟、万、亿”分别用它们的拼音(shi,bai,qian,wan,yi)代表。
Input
一个整数数值N( N>=0 且N<=2147483647)
Output
对应的中文大写文字字串
Sample Input
12345 10200
Sample Output
1wan2qian3bai4shi5 1wan02bai
Hint
* 遇到 10 时输出『1shi』
最佳答案
- 五星知识达人网友:不如潦草
- 2021-07-30 13:08
#include<iostream.h>
const int N=30;
int swap(char a[],int m,int n)
{
int i,j;
for(i=n;i>0;i--)
{
for(j=m;j>=n-i;j--)
a[j]=a[j-1];
m++;
}
return m;
}
void main()
{
char a[12],b[N];
int i,j,m=0,n=1;
cout<<"一个整数数值N( N>=0 且N<=2147483647)"<<endl;
cin>>a;
for(i=0;a[i]!='\0';i++)
m++;
b[n-1]='\0';
for(i=m-1;i>=0;i--)
if((m-i)%4==2)
{
if(a[i]!='0')
{
n=swap(b,n,3);
b[0]='s';b[1]='h';b[2]='i';
}
n=swap(b,n,1);
b[0]=a[i];
}
else if((m-i)%4==3)
{
if(a[i]!='0')
{
n=swap(b,n,3);
b[0]='b';b[1]='a';b[2]='i';
}
n=swap(b,n,1);
b[0]=a[i];
}
else if((m-i)%4==0)
{
if(a[i]!='0')
{
n=swap(b,n,4);
b[0]='q';b[1]='i';b[2]='a';b[3]='n';
}
n=swap(b,n,1);
b[0]=a[i];
}
else
{
if(m-i==5)
{
n=swap(b,n,3);
b[0]='w';b[1]='a';b[2]='n';
}
else if(m-i==9)
{
n=swap(b,n,2);
b[0]='y';b[1]='i';
}
n=swap(b,n,1);
b[0]=a[i];
}
cout<<b<<endl;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯