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

    币值转换 (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;
              }
    

    设计思路

    第一步:定义变量,用for语句进行判断
    第二步:使用嵌套语句进行运算
    第三步:用switch语句进行转换
    第四步:用if-else语句判断输出

    本题遇到的问题及解决方法

    问题:在for语句中定义 i 错误
    解决方法:定义变量加上整型变量 i

    运行结果截图

  • 相关阅读:
    不务正业系列-浅谈《过气堡垒》,一个RTS玩家的视角
    [LeetCode] 54. Spiral Matrix
    [LeetCode] 40. Combination Sum II
    138. Copy List with Random Pointer
    310. Minimum Height Trees
    4. Median of Two Sorted Arrays
    153. Find Minimum in Rotated Sorted Array
    33. Search in Rotated Sorted Array
    35. Search Insert Position
    278. First Bad Version
  • 原文地址:https://www.cnblogs.com/zzwwll/p/10407635.html
Copyright © 2011-2022 走看看