输入一个整数(位数不超过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>
void da_xie(int n);//定义大写函数
void dan_wei(int n); //定义单位输出函数
int main(void){
int pow, num, t_num, digit, count, old_digit;
scanf("%d",&num);
t_num = num;
pow = 1;
count = 1;
if(num == 0){
da_xie(num);//处理最小个位数
}else{
//便于将一串数字展开:如12345 --> 1 2 3 4 5
while(t_num / 10 != 0){
count++;
pow *= 10;
t_num /= 10;
}
old_digit = num / pow;//记录前一个数字
num %= pow;
pow /= 10;
while(pow >= 1){
digit = num / pow;//记录当前数字
if(digit != 0){//如果当前数字不为零
if(old_digit == 0){//前一个数字为零
da_xie(old_digit);
if(count == 5){//特殊情况:10004000
dan_wei(count);
}
}else{
da_xie(old_digit);
dan_wei(count);
}
}else{
if(old_digit == 0){
if(count == 5){//特殊情况:10004000
dan_wei(count);
}
}else{
da_xie(old_digit);
dan_wei(count);
}
}
old_digit = digit;
count--;
num %= pow;
pow /= 10;
}
//判断最后一位数,存在于old_digit中的
if(old_digit != 0){
da_xie(old_digit);
}
}
return 0;
}
void da_xie(int n){
switch(n){
case 9:printf("9");break;
case 8:printf("8");break;
case 7:printf("7");break;
case 6:printf("6");break;
case 5:printf("5");break;
case 4:printf("4");break;
case 3:printf("3");break;
case 2:printf("2");break;
case 1:printf("1");break;
case 0:printf("0");break;
default:break;
}
}
void dan_wei(int n){
switch(n){
case 9:printf("亿");break;
case 8:printf("千");break;
case 7:printf("百");break;
case 6:printf("十");break;
case 5:printf("万");break;
case 4:printf("千");break;
case 3:printf("百");break;
case 2:printf("十");break;
case 1:
default:break;
}
}