输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。
输入格式:
输入在一行中给出一个不超过9位的非负整数。
输出格式:
在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。
输入样例1:
813227345
输出样例1:
iYbQdBcScWhQdBeSf
输入样例2:
6900
输出样例2:
gQjB
代码如下:
#include<stdio.h>
int main()
{
int n;
int count = 0;
int s,k;
int i,j;
int b = 0;
int a[10];
int sum = 0;
scanf("%d",&n);
k = n;
if(n==0)//单个0时输出
{
printf("a");
}
while(n!=0)//将数字分解,并存入数组
{
i = n % 10;
a[count] = i;
count++;
n = n / 10;
}
s = count + 1;
for(j = count-1;j>=0;j--)
{
s--;
if(a[j]==0&&a[j-1]==0&&a[1]!=0&&k>10000&&b==0)//不超过亿,中间连续多0解决方法
{
b++;
printf("W");
}
if(a[j]==0&&a[j-1]==0)//遇到连续0时的方法
{
continue;
}
switch(a[j])//数字转字母
{
case 0:
printf("a");
break;
case 1:
printf("b");
break;
case 2:
printf("c");
break;
case 3:
printf("d");
break;
case 4:
printf("e");
break;
case 5:
printf("f");
break;
case 6:
printf("g");
break;
case 7:
printf("h");
break;
case 8:
printf("i");
break;
case 9:
printf("j");
break;
}
/*if(s==5)
{
printf("W");
}*/
if(a[j]!=0)//数字转单位
{
switch(s)
{
case 1:
break;
case 2:
printf("S");
break;
case 3:
printf("B");
break;
case 4:
printf("Q");
break;
case 5:
printf("W");
break;
case 6:
printf("S");
break;
case 7:
printf("B");
break;
case 8:
printf("Q");
break;
case 9:
printf("Y");
break;
}
}
//s--;
}
return 0;
}