PTA 团队天梯赛║L1-007 念数字

一、题目要求

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:

0: ling 1: yi 2: er 3: san 4: si 5: wu 6:liu 7:qi 8: ba 9: jiu

输入格式:

输入在一行中给出一个整数,如:1234

提示:整数包括负数、零和正数。

输出格式:

在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si

输入样例:

1
-600

输出样例:

1
fu liu ling ling

二、解题思路

用户输入 string 类型数据,然后存放至 char 数组中,用 switch 判断输出相应位置的拼音

三、代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <cstring>
using namespace std;

int main()
{
string n;
cin >> n;
char a[20];
int i = 0;
for(int j=0; j < n.length(); j++)
{
a[j] = n[j];
}

while(i < n.length())
{
switch (a[i])
{
case '-':
cout << "fu";
break;
case '0':
cout << "ling";
break;
case '1':
cout << "yi";
break;
case '2':
cout << "er";
break;
case '3':
cout << "san";
break;
case '4':
cout << "si";
break;
case '5':
cout << "wu";
break;
case '6':
cout << "liu";
break;
case '7':
cout << "qi";
break;
case '8':
cout << "ba";
break;
case '9':
cout << "jiu";
break;
}
if(i == n.length() - 1) {cout << endl; break;}
cout << " ";
i++;
}

return 0;
}

四、反思总结

题目难度不大,但是一开始走了弯路,第一次想法为用 int 存储输入的整数,直接判断每一位上的数字较为麻烦复杂,因此改换为先使用 string 类型转存 char 数组的方式,更加简单快捷。主要实现功能部分用 switch 来实现。