您的位置:首页 > 其它

PAT : 循环-19. 币值转换(20)

2015-03-18 20:17 267 查看
输入一个整数(位数不超过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 9char 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]);elseprintf("%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;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: