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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM