zoukankan      html  css  js  c++  java
  • 循环-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())!='
    ')
        {
            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;
    }


  • 相关阅读:
    canvas 平移&缩放
    html + css + jquery实现简单的进度条实例
    jQuery Layer mobile 弹出层
    jQuery-全屏滚动插件【fullPage.js】API 使用方法总结
    Hive:select count(distinct)优化以及hive.groupby.skewindata
    Spark Application、Driver、Job、stage、task
    Spark 参数说明
    Xgboost小结与调参
    梯度下降算法过程详细解读
    机器学习杂记
  • 原文地址:https://www.cnblogs.com/ligen/p/4251424.html
Copyright © 2011-2022 走看看