7-23 币值转换 (20 分)

题目链接

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

输入格式:

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

输出格式:

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

输入样例1:

813227345

输出样例1:

iYbQdBcScWhQdBeSf

输入样例2:

6900

输出样例2:

gQjB

 

 1 #include<algorithm>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<cmath>
 6 using namespace std;
 7 int main(){
 8     char num[20];
 9     int k,num_len;
10     scanf("%s",num);
11     num_len = strlen(num);
12     for (int i = num_len - 1;i >= 0;i--){//去掉末尾0
13         if(num[i] != '0'){
14             k = i;
15             break;
16         }
17     }
18     for(int i = 0;i <= k;i++){
19         if(num[i] != '0'){
20             printf("%c",num[i] - '0' + 'a');
21             if(num_len - i - 1 == 1 || num_len - i - 1 == 5){
22                 printf("S");
23                 if(num_len - i - 1 == 5 && num[i + 1] == '0' && i + 1 < num_len)
24                     printf("W");
25             }
26             else if(num_len - i - 1 == 2 || num_len - i - 1 == 6){
27                 printf("B");
28                 if(num_len - i - 1 == 6 && num[i + 1] == '0' && i + 1 < num_len)
29                     printf("W");
30             }
31             else if(num_len - i - 1 == 3 || num_len - i - 1 == 7){
32                 printf("Q");
33                 if(num_len - i - 1 == 7 && num[i + 1] == '0' && i + 1 < num_len)
34                     printf("W");
35             }
36             else if(num_len - i - 1 == 4)
37                 printf("W");
38             else if(num_len - i - 1 == 8){
39                 printf("Y");
40             }
41         }
42         else{
43             if(num[i - 1] != '0')
44                 printf("a");
45         }
46     }
47     printf("\n");
48     return 0;
49 }
View Code

 

posted @ 2018-12-03 17:51  永不&言弃  阅读(1672)  评论(0编辑  收藏  举报