PTA编程总结二

7-1 币值转换 (20 分)

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

输入格式:

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

输出格式:

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

#include<stdio.h>
#include<math.h>
int main()
{
  char number[10]={'a','b','c','d','e','f','g','h','i','j'};    //存数字
  char unit[10]={0,'S','B','Q','W','S','B','Q','Y'};
 
 char money[17];
 int n,num=0,cnt=0,i=0,count=0,t=0,k=0;
 
 scanf("%d",&n);
 num=n;
 if(n==0) printf("a");
 else{
       while(n){
        n/=10;
        cnt++;
        }
 
         cnt=cnt-1;
       count=pow(10,cnt);
   
       n=num;
   
        while(n){
    
        num=n/count;
        n%=count;
    
        if(num){
         money[i++]=number[num];
         if(cnt>=1)
            money[i++]=unit[cnt];
     }
     else{
      if(cnt==4)
         money[i++]=unit[cnt];
      
      if(cnt!=0&&t==0){
       money[i++]=number[num];
       t=1;
      }
     }
     
           count/=10;
              cnt--;
    
       }
       
       for(k=0;k<i;k++){
        printf("%c",money[k]);
    }
     
    }
   
    return 0;
 
}

猜你喜欢

转载自www.cnblogs.com/xgblz/p/10407197.html