输入一个整数(位数不超过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> #define MAXLENGTH 9 char str[4] = {' ', 'S', 'B', 'Q'}; int seperate (int * numList, long num) { int i = MAXLENGTH-1; while(1) { numList[i] = num % 10; num /= 10; if(num <= 0) break; i--; } return i; } void readNum(int numList[], int start) { if(start == MAXLENGTH - 1) printf("a"); else { if(start == 0) printf("%cY", 'a'+numList[0]); for(int c = 0; c < 2; c++) { if(start > 4) c = 1; int position = 3; int hasprint = 0; int i = c*4 +1; if(start > i) { position -= (start - i); i = start; } for(; i <= (c+1)*4; i++, position--) { if(numList[i] != 0) { if(position > 0) printf("%c%c", 'a'+numList[i], str[position]); else printf("%c", 'a'+numList[i]); hasprint = 1; } else { if(i < MAXLENGTH - 1 && numList[i+1] != 0) printf("a"); } } if(c == 0 && hasprint == 1) printf("W"); } } printf("\n"); } int main() { int numList[MAXLENGTH] = {0}; long num; scanf("%d", &num); int start = seperate(numList, num); readNum(numList, start); return 0; }