题目:输入一个数字范围为[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;
}
运行结果: