zoukankan      html  css  js  c++  java
  • 2019/1/2

    币值转换

    输入一个整数(位数不超过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 ()
    {
        char NUM[10]={'a','b','c','d','e','f','g','h','i','j'};    //存数字 
        char UNIT[10]={0,0,'S','B','Q','W','S','B','Q','Y'};//存单位,为将下标与位数对应,前两个单元存0
         char RESULT[17];//存结果,最多存9个数字,8个单位
         int n,k=0,bitnum=0,cur,pre;    //定义输入数字,结果数组索引,位数,当前位,前一位
         
         scanf("%d", &n);
         
         if(n==0)
         {
             printf("a");
             return 0;
         }
         while(n!=0)
         {
             cur = n % 10;
             n /= 10;
             bitnum++;
             
         if(cur)
         {
             if(bitnum>1)//如果不为个位,存单位 
             RESULT[k++] = UNIT[bitnum];
             
             RESULT[k++] = NUM[cur];//无论如何,存数字 
         }
         else//如果当前位为0 
         {
             if(bitnum==5)
             RESULT[k++] = UNIT[bitnum];
             
             if(pre!=0&&bitnum!=4&&bitnum!=1)//若不为万位,千位,个位,且前一位不为0
             RESULT[k++]=NUM[cur];//存当前的数字0
         }
             
             pre=cur;//注意及时保存当前位 
          }
          for(int i=k-1;i>=0;i--)//倒序输出结果 
          printf("%c",RESULT[i]);
          
          return 0;
    }

    之前自己写很多情况没考虑到,参考了下大佬的博客写的,大佬用的c++写的,自己的思路太乱了所以用的大佬的思路。最近在复习,今天比较闲就写了一题,还是有点烧脑的。哈哈!!!

  • 相关阅读:
    python json 和 pickle的补充 hashlib configparser logging
    go 流程语句 if goto for swich
    go array slice map make new操作
    go 基础
    块级元素 行内元素 空元素
    咽炎就医用药(慢性肥厚性咽炎)
    春季感冒是风寒还是风热(转的文章)
    秋季感冒 咳嗽 怎么选药
    解决IE浏览器“无法显示此网页”的问题
    常用的 css 样式 记录
  • 原文地址:https://www.cnblogs.com/zw431387/p/10211870.html
Copyright © 2011-2022 走看看