7-23 币值转换 (20 分)

题目详情 (pintia.cn)

code1

#include <stdio.h>
int main()
{
	int i=0,j,n;
	scanf("%d",&n);
	char a[9];
	char b[9]={'\n','S','B','Q','W','S','B','Q','Y'};  //位的名称存入数组b
	if(n==0){
		printf("a\n");
	} else{
		while(n!=0){   //数字存入数组a
		a[i]=n%10;
		n=n/10;
		i++;
		}
		i=i-1;
		for(;i>=0;i--){            //数组a反向输出
			if(a[i]==0){           
				if(i==4){               //万位为0的情况
					if(a[8]!=0 && a[7]+a[6]+a[5]+a[4]==0  ){   //有亿位,且万位均为零
						printf("a");                           //输出一个零(如100004800)
					}else{
						printf("W");                           //否侧万位就输出一个万。
					}
				}else{
					if(a[i-1]==0){                              //重复0不输出
					continue;
					}else{                                 // 一般的0就输出零,没有位的名称
						printf("a");                
					}
				}	
			}else{
				printf("%c%c",a[i]+'a',b[i]);
			}	
		}
	}
	
	return 0;
}




总结:

数字存在一个数组,位数名称存在一个数组。由大到小反向输出两个数组。

其他就是对于读数规则的判定。

code2

#include <stdio.h>
#include <string.h>
int main()
{
	int i,n;
	char a[15];
	scanf("%s",&a);
	char b[9]={'\n','S','B','Q','W','S','B','Q','Y'};
    if(a[0]=='0') {printf("a\n"); return 0;}
    n=strlen(a);
    for(i=0;i<n;i++){  
        if(a[i]=='0'){           
            if(i==n-4) printf("W");
            if(i<n-1&&a[i+1]=='0'||i==n-1)continue; 
            else printf("a");
        }else  printf("%c%c",a[i]+'a'-'0',b[n-i-1]);
	}
	return 0;

把数按字符串输入(正向输入)

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值