zoukankan      html  css  js  c++  java
  • 7-1 币值转换

    7-1 币值转换 (20 分)

    输入一个整数(位数不超过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>
    #include <math.h>
    int main()
    {
              int a,b,c,d,e,n,i,j,m,N,k;
              scanf("%d",&N);
              a=b=N;
              if(a==0){
                   printf("a");
              }
              for(i=0;a>0;i++){
                   a=a/10;
              }
              c=i;
              for(i;i>0;i--){
                   n=1;
                   e=0;
                   for(m=i-1;m>0;m--){
                        n=n*10;
                   }
                   a=b/n;                  /*从高位数到低位数的分离*/

                   b=b-a*n;

                   switch(a){
                                  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;
                   }
                   switch (i) {
                                  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;
                   }
                   j=0;
                   for(d=b;d>0;j++){
                                  d=d/10;
                   }
                   j=i-j-1;
                   if(c<9&&i>5&&j>2){
                                 printf("W");
                   }
                   j=0;
                   for(d=b;d>0;j++){
                                d=d/10;
                   }
                   if(j!=0){
                                  e=i-j-1;
                   }else{
                                  i=0;
                   }
                   if(e>3&&i>4||e==2&&i<4){
                                printf("a");
                                i=j+1;
                   }else if(e==2&&i>1){
                                printf("a");
                               i=i-2;
                   }else if(j<4&&c<9&&j!=0&&e!=1&&e!=0){
                                printf("a");
                                i=j+1;
                   }else if(e==1){
                        printf("a");
                        i=j+1;
                   }else{
                        i=j+1;
                        }
                   }
                   return 0;
              }

    实验思路:
    先计算出输出的数的位数,利用位数来确定输出的大写字母,运用循环来进行从高位数到低位数
    一个一个进行判断要输出的小写字母,用条件语句来判断特殊情况。

    实验错误:



    当时没有想到位数小于9的情况,从而没有注意在没有上亿元的情况下中间位数存在连续多个0的数

    实验正确:


  • 相关阅读:
    unitTest单元测试框架
    Day06_页面发布与课程管理
    Day05_RabbitMQ研究
    Day04_页面静态化
    Day04_freemarker
    Day03_CMS页面管理开发
    Java概述练习题
    01_语言概述
    00_编程入门
    德道经
  • 原文地址:https://www.cnblogs.com/huangnuocheng/p/10293536.html
Copyright © 2011-2022 走看看