首页 > 代码库 > 循环-19. 币值转换

循环-19. 币值转换

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

输入格式:

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

输出格式:

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

输入样例1:

813227345

输出样例1:

iYbQdBcScWhQdBeSf

输入样例2:

6900

输出样例2:

gQjB


代码太乱,逻辑也乱,有几个要点
一是数组右移
二是全0
三是多个连续的0只输出一个零
四是万如果为0,要特别的打出一个W

#include <iostream>#include <stdio.h>#include <math.h>#include<string>int main(){    char shuzi[10];//数字转换字母的数组     for(int i=0;i<10;i++)    {        shuzi[i]=97+i;    //    printf("%c",shuzi[i]);    }         char danwei[9];//将单位转换    danwei[0]=Y;    danwei[1]=danwei[5]=Q;    danwei[2]=danwei[6]=B;    danwei[3]=danwei[7]=S;    danwei[4]=W;    danwei[8]=A;             int num[9]={0};//num完成了对数组的右移,1234转变为000001234    //利用栈接受数字    int stack[9];    for(int i=0;i<=8;i++)    {        stack[i]=88;    }    int i=0;    char c;    //进栈     while((c=getchar())!=\n)    {        stack[i++]=c-0;    //    printf("%d",stack[i-1]);    }     //出栈     i=8;    int j=8;//num数组的指示     int status=0;//检测是否有非88的数,如果有就开始出栈     while(i>=0)    {        if(status==0&&stack[i]!=88)        {            status=1;        }         if(status==1)        {            num[j]=stack[i];            j--;        }        i--;        }             //准备输出,对0要特殊处理,1001为一千零一,1100为一千一百 ,1000100为一百万零一百     for(j=0;j<=8;j++)    {        if(num[j]!=0)break;    }    if(j>8)    {        printf("a");        return 0;    }        int print_state=0;    i=0;    while(i<=8)    {        if(print_state==0&&num[i]!=0)        {            print_state=1;        }        if(print_state)        {            if(num[i]!=0)            {                                if(i!=8)                    printf("%c%c",shuzi[num[i]],danwei[i]);                    else                    printf("%c",shuzi[num[i]]);            }else            {                while(num[i]==0&&i<=8)                {                if(i==4) printf("W");                 i++;}                                 if(i<=8)                {                    printf("a");                    i--;                }                else                {                    return 0;                }            }        }        i++;    }                 return 0;}

 



循环-19. 币值转换