解题思路:主要是字符串的处理,首先求和,然后把求得的数字转化为数字,再用对应的数字映射导对应的拼音进行输出。
C/C++版本
#include<cstdio>
#include<cstring>
char stt[][8]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
int main(){
char str[110]={0};
scanf("%s",str);
int len=strlen(str);
int sum=0;
for(int i=0;i<len;i++){
sum+=str[i]-'0';
}
int ss[110]={0};
int k=0;
do{
ss[k++]=sum%10;
sum/=10;
}while(sum!=0);
for(int i=k-1;i>=0;i--){
printf(i==k-1?"%s":" %s",stt[ss[i]]);
}
return 0;
}
Java版本
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String str = new String();
Scanner in = new Scanner(System.in);
str = in.nextLine();
int sum = 0;
for(int i = 0; i < str.length(); i++) {
sum += str.charAt(i) - '0';
}
Map mp = new HashMap();
mp.put(1, "yi" );
mp.put(2,"er");
mp.put(3, "san" );
mp.put(4,"si");
mp.put(5, "wu" );
mp.put(6,"liu");
mp.put(7, "qi" );
mp.put(8,"ba");
mp.put(9, "jiu" );
mp.put(0,"ling");
str ="" + sum;
int flag = 0;
for(int i = 0; i < str.length(); i++) {
int k = str.charAt(i) - '0';
if(flag == 0) System.out.print(mp.get(k));
else System.out.print(" " + mp.get(k));
flag++;
}
}
}