7-83 币值转换 (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>
int main(){
int n;
scanf("%d",&n);
int i;
int k=1;
int t=n;
while(t>0){
t/=10;
i++;
k*=10;
}
i++;
k=k/10;
int j;
int s;
for(j=1;n>0;j++){
s=n/k;
switch(s){
case 0:printf("a"); goto show;
case 1:printf("b"); goto show;
case 2:printf("c"); goto show;
case 3:printf("d"); goto show;
case 4:printf("e"); goto show;
case 5:printf("f"); goto show;
case 6:printf("g"); goto show;
case 7:printf("h"); goto show;
case 8:printf("i"); goto show;
case 9:printf("j"); goto show;
}
show:
n=n%k;
k/=10;
i--;
switch(i){
case 9:if(s!=0) printf("Y"); continue;
case 8:if(s!=0) printf("Q");continue;
case 7:if(s!=0) printf("B");continue;
case 6:if(s!=0) printf("S");continue;
case 4:if(s!=0) printf("Q");continue;
case 3:if(s!=0) printf("B");continue;
case 2: if(s!=0) printf("S");
}
}
}