快手笔试题:收入一个数字,输出该数字对应的中文读法

题目:输入一个数字范围为[0,99999]中任意一个数字,输出该数字对应的中文读法,为了方便输出,使用字母替换相应的中文,万W千Q百B十S零L,使用数字替代中文数字。

    注:11应该表示为一十一(1S1),而不是十一(S1);

解题思路本题用一个数组即可完美解决,思路也不难,具体 解题源码如下所示:

解题源码:

#include<iostream>
using namespace std;

void fun(long n)
{
	if (n == 0)
	{
		cout << 0;
		return;
	}
	int temp = 0;
	long arr[5] = { 0 };
	int i = 0;
	int j = 4;
	while (n)
	{
		temp = n % 10;
		arr[j] = temp;
		n /= 10;
		--j;
		++i;
	}
	int k = 0;
	while (i)
	{
		k = 5 - i;
		switch (i)
		{
			
			case 1:if (arr[k] != 0)
			{
				cout << arr[k];
			}
			break;
			case 2:if (arr[k] != 0)
			{
				cout << arr[k] << "S";
			}
			else if (arr[k] == 0 && arr[k+1] != 0 )
			{
				cout << "L";
			}
			break;
			case 3:if (arr[k] != 0)
			{
				cout << arr[k] << "B";
			}
			else if (arr[k] == 0 && arr[k + 1] != 0 && (arr[3] || arr[4]))
			{
				cout << "L";
			}
			break;
			case 4:if (arr[k] != 0)
			{
				cout << arr[k] << "Q";
			}
			else if (arr[k] == 0 && arr[k + 1] != 0 && (arr[2] || arr[3]))
			{
				cout << "L";
			}
			break;
			case 5:if (arr[k] != 0)
			{
				cout << arr[k] << "W";
			}
				   break;
			default:
				break;
			}
		--i;
	}
}
int main()
{
	/*
	12001   1W2QL1
	*/
    long n = 0;
	while (1)
	{
		cin >> n;
		if (n >= 0 && n <= 99999)
		{
			fun(n);
			cout << endl;
		}
	}
	return 0;
}
运行结果:

                                               

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值