L1-007. 念数字
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
翁恺
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出“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
。
-600输出样例:
fu liu ling ling
最开始思路:把所有的用if-else语句输出,这种方法太麻烦,很容易处错误,而且很浪费时间。
#include<bits/stdc++.h>
using namespace std;
int main(){
string n;
int i,j,k;
cin>>n;
int len=n.size();
if(n[0]=='-'){
printf("fu");
for(i=1;i<len;i++) {
if(n[i]=='0'){
printf(" ling");
}else if(n[i]=='1'){
printf(" yi");
}else if(n[i]=='2'){
printf(" er");
}else if(n[i]=='3'){
printf(" san");
}else if(n[i]=='4'){
printf(" si");
}else if(n[i]=='5'){
printf(" wu");
}else if(n[i]=='6'){
printf(" liu");
}else if(n[i]=='7'){
printf(" qi");
}else if(n[i]=='8'){
printf(" ba");
}else if(n[i]=='9'){
printf(" jiu");
}
}
cout<<endl;
}else{
for(i=0;i<len-1;i++){
if(n[i]=='0'){
printf("ling ");
}else if(n[i]=='1'){
printf("yi ");
}else if(n[i]=='2'){
printf("er ");
}else if(n[i]=='3'){
printf("san ");
}else if(n[i]=='4'){
printf("si ");
}else if(n[i]=='5'){
printf("wu ");
}else if(n[i]=='6'){
printf("liu ");
}else if(n[i]=='7'){
printf("qi ");
}else if(n[i]=='8'){
printf("ba ");
}else if(n[i]=='9'){
printf("jiu ");
}
}
if(n[len-1]=='0'){
printf("ling");
}else if(n[len-1]=='1'){
printf("yi");
}else if(n[len-1]=='2'){
printf("er");
}else if(n[len-1]=='3'){
printf("san");
}else if(n[len-1]=='4'){
printf("si");
}else if(n[len-1]=='5'){
printf("wu");
}else if(n[len-1]=='6'){
printf("liu");
}else if(n[len-1]=='7'){
printf("qi");
}else if(n[len-1]=='8'){
printf("ba");
}else if(n[len-1]=='9'){
printf("jiu");
}
cout<<endl;
}
return 0;
}
思路2:用二维数组把数字对应的字符串存起来,然后再将整数分解即可