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
1 #include<stdio.h> 2 int main() 3 { 4 int i,n,m=1,p=1,z=0,item; 5 char a[10] = {'a','b','c','d','e','f','g','h','i','j'}; /*定义两个数组储存字母*/ 6 char b[8] = {'S','B','Q','W','S','B','Q','Y'}; 7 scanf("%d",&n); 8 item=n; 9 while(item/10>0){ /*这里是为了判断N是几位数*/ 10 item=item/10; 11 m++; 12 p=p*10; 13 } 14 if(m==1||n==0){ /*如果是1位数则直接输出并结束程序*/ 15 printf("%c",a[n]); 16 return 0; 17 } 18 if(n%10==0){ /*判断N是不是以0结尾的,如6900*/ 19 while(n%10==0){ /*去掉后面的0*/ 20 n=n/10; 21 p=p/10; 22 z++; 23 } 24 for(i=(m-z);i>0;i--){ /*(m-z)是减少循环输出的次数,后面有几个0就减少几次*/ 25 printf("%c",a[n/p]); /*通过取整,输出N最前面的那一位数字*/ 26 if(m-2>=0&&n/p!=0) /*(m-2)是判断还符不符合继续输出位数,(n/p!=0)是为了防止N中间有0的情况*/ 27 printf("%c",b[m-2]); /*这里为什么是(m-2)和我定义的b数组有关*/ 28 m--; 29 if(n/p==0){ /*整个if语句都是去掉N中间的0*/ 30 p=p/10; 31 while(n/p==0){ 32 p=p/10; 33 m--;i--; 34 } 35 continue; 36 } 37 n=n%p; /*取整准备下一次的循环*/ 38 p=p/10; 39 if(i==4&&n/p==0) /*这里如果N是大于10万的数就必须当i等于4的时候多输出一个W*/ 40 printf("%c",b[3]); 41 } 42 } 43 else{ /*后面这里就和上面的差不多,因为不是0结尾的就改了一些数据的行了*/ 44 for(i=m;i>0;i--){ 45 printf("%c",a[n/p]); 46 if(i-2>=0&&n/p!=0) 47 printf("%c",b[i-2]); 48 if(n/p==0){ 49 p=p/10; 50 while(n/p==0){ 51 p=p/10; 52 i--; 53 } 54 continue; 55 } 56 n=n%p; 57 p=p/10; 58 if(i==6&&n/p==0) 59 printf("%c",b[3]); 60 } 61 } 62 return 0; 63 }
设计思路
![](https://img2018.cnblogs.com/blog/1580460/201902/1580460-20190218152929792-1373565400.jpg)
作业过程中遇到的问题与解决办法
![](https://img2018.cnblogs.com/blog/1580460/201902/1580460-20190218151702506-587893879.png)
![](https://img2018.cnblogs.com/blog/1580460/201902/1580460-20190218151732497-1636907374.png)
最小个位数运行超时的问题,我是把当N为个位数时,单独拿出来了,如14-17行,中间连续多0的问题,我通过调试发现是在循环去0的过程中,一个重要的计数变量m没有随之减小,所以我在33行加了一个m--。
运行结果截图
![](https://img2018.cnblogs.com/blog/1580460/201902/1580460-20190213163034927-1205413214.png)