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;}
相关文章推荐
- PAT_B_循环-19. 币值转换(20)
- 循环-19. 币值转换(20)
- 循环-19. 币值转换(20)
- 循环-19. 币值转换(20)
- 循环-19. 币值转换(20)
- 循环-19. 币值转换(20)
- 循环-19. 币值转换
- PAT循环-18. 龟兔赛跑(20)
- 1008. 数组元素循环右移问题 (20) (模拟啊 ZJU_PAT)
- PAT训练(乙级)—— 1008. 数组元素循环右移问题 (20)
- PAT乙级真题及训练集(6)--1008. 数组元素循环右移问题 (20)
- PAT 1008. 数组元素循环右移问题 (20)
- PAT循环-11. 水仙花数(20)
- 7-23 币值转换(20 分)
- PAT Basic 1008. 数组元素循环右移问题 (20)
- PAT乙级1008. 数组元素循环右移问题 (20)
- PAT 1001. A+B Format (20)(字符串转换)
- PAT:1008. 数组元素循环右移问题 (20)
- PAT乙级.1008. 数组元素循环右移问题 (20)
- pat 乙级 1008. 数组元素循环右移问题 (20)