币值转换

输入一个整数(位数不超过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,l,i=0,c=0,d=0;
    char a[10]= {'a','b','c','d','e','f','g','h','i','j'};
    char b[10]= {' ',' ','S','B','Q','W','S','B','Q','Y'};
    char num[10];
    gets(num);
    l=strlen(num);
    if(num[0]=='0'&&l==1)
        printf("a");
    else
        while(l-->0)
        {
            n=num[i++]-'0';
            if(n!=0)
            {
                if(c==1)
                    printf("a");
                printf("%c",a[n]);
                c=0;
            }
            else
            {
                c=1;
                if(l==4&&d==1)
                    printf("W");
                continue;
            }
            if(l>0)
            {
                if(l>4&&l<8) d=1;
                printf("%c",b[l+1]);
            }
        }
    return 0;
}
```

**设计思路**

将整数存入一个数组,可用strlen()计算数组长度,就可以得出这个整数的位数。将数组里保存的整数转化为整数型,判断每个数是否为0;单独判断长度为1,直接输出a;从高位到低位逐渐转换,遇到0时,将其放到下一次循环不是0的时候一并输出0,本轮只输出单位。(连续0只输出一个)整数大于万时,减到千位前单独输出w。
 

**运行结果截图**



原文地址:https://www.cnblogs.com/scafer/p/10414762.html