输入一个整数 (位数不超过 9 位) 代表一个人民币值(单位为元), 请转换成财务要求的大写中文格式. 如 23108 元, 转换后变成 "贰万叁仟壹百零捌" 元. 为了简化输出, 用小写英文字母 a-j 顺序代表大写数字 0-9, 用 S,B,Q,W,Y 分别代表拾, 百, 仟, 万, 亿. 于是 23108 元应被转换输出为 "cWdQbBai" 元.
输入格式:
输入在一行中给出一个不超过 9 位的非负整数.
输出格式:
在一行中输出转换后的结果. 注意 "零" 的用法必须符合中文习惯.
输入样例 1:
813227345
输出样例 1:
iYbQdBcScWhQdBeSf
输入样例 2:
6900
输出样例 2:
gQjB
1. 实验代码:
- #include<stdio.h>
- int main ()
- {
- char NUM[10]={'a','b','c','d','e','f','g','h','i','j'}; // 存数字
- char UNIT[10]={0,0,'S','B','Q','W','S','B','Q','Y'};// 存单位, 为将下标与位数对应, 前两个单元存 0
- char RESULT[17];// 存结果, 最多存 9 个数字, 8 个单位
- int n,k=0,bitnum=0,cur,pre; // 定义输入数字, 结果数组索引, 位数, 当前位, 前一位
- scanf("%d", &n);
- if(n==0)
- {
- printf("a");
- return 0;
- }
- while(n!=0)
- {
- cur = n % 10;
- n /= 10;
- bitnum++;
- if(cur)
- {
- if(bitnum>1)// 如果不为个位, 存单位
- RESULT[k++] = UNIT[bitnum];
- RESULT[k++] = NUM[cur];// 无论如何, 存数字
- }
- else// 如果当前位为 0
- {
- if(bitnum==5)
- RESULT[k++] = UNIT[bitnum];
- if(pre!=0&&bitnum!=4&&bitnum!=1)// 若不为万位, 千位, 个位, 且前一位不为 0
- RESULT[k++]=NUM[cur];// 存当前的数字 0
- }
- pre=cur;// 注意及时保存当前位
- }
- for(int i=k-1;i>=0;i--)// 倒序输出结果
- printf("%c",RESULT[i]);
- return 0;
- }
2. 设计思路:
阅读题目 --》开始 --》用数组表示 --》输入变量, 定义字符 --》判断 n 是否等于 0--》比较 a 进行判断 --》编写代码, 进行程序循环 --》输出结果 --》结束
3. 解决方法:
题目内容转换较为复杂, 自己并不是很懂, 然后是通过询问同学以及上网搜索完成的, 还是准备想去了解一下更多的知识.
4. 运行结果截图:
币值转换
来源: http://www.bubuko.com/infodetail-2962191.html