7-1 币值转换 (20 分)
输入一个整数(位数不超过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>
int main(void)
{
int c,a,b,n,j,N;
scanf("%d",&N);
a=b=N;
if(a0){
printf("a");
}
for(i=0;i<a;i++,c--)
{
switch(c)
{
case '0':c='a';break;
case '1':c='b';break;
case '2':c='c';break;
case '3':c='d';break;
case '4':c='e';break;
case '5':c='f';break;
case '6':c='g';break;
case '7':c='h';break;
case '8':c='i';break;
case '9':c='j';break;
default:break;
}
if(c'a')
{
if(b==5)
printf("W");
switch(b)
{
case 9:printf("Y");break;
case 8:printf("Q");break;
case 7:printf("B");break;
case 6:printf("S");break;
case 5:printf("W");break;
case 4:printf("Q");break;
case 3:printf("B");break;
case 2:printf("S");break;
default:break;
}
}
}
return 0;
}
做这个题目实在是没有什么头绪,只知道是字符的输出转换是用switch进行,但对特殊的情况的确定不知道该怎么确定。这个代码是自己写的错误的代码,在PTA上压根就没过。
本来以为开学后老师会讲但也没有讲。所以也只有去借鉴一下别人的代码了。但也没交PTA了,所以就不粘贴别人的代码了,就大致将一下自己理解的思路。
1.输出的顺序呢字母在前单位在后。
2.用switch语句进行转化和输出。
3.要注意一些存在的特殊条件,如万位数字和单位的关系。
4.另外他是用数组进行处理所以我也不太懂。大致用他的代码做了一份思维简图。(代码出处https://blog.csdn.net/moyulinggdi)
流程图如下: