开始时想用C语言写 后来觉得switch好长一溜(而且写完还一堆bug 后面看带佬代码用二维数组才发觉用switch好傻 写了个cpp版的 思路: 首先需要一个容器把需要输出的拼音装进去 由于不知道测试输入的具体个数,需要有一个操作终止输入 输入的是字符型数据,需要减去0对应的ASC码才是想要的数字 if 判断开始觉得没有必要,for 中的条件判断就能够满足,但是等执行完第一个for 循环之后sum的值都会变成个位数 string 的输出有些问题 在用printf输出会变成乱码 改成了cout 尝试在拼音后加空格 最后再输出退格也出现了问题 原因不明 改成了直接输出空格的形式
#include<iostream>
using namespace std;
#include<string>
int main(){
int sum=0, i, j=0;
char ch;
int m_reverse[4]={0};
string ping[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
while((ch=getchar())!='\n'){
sum+=(ch-'0');
}
if(sum>=10){
for(i=0; sum>=10; i++,j++){
m_reverse[i]=sum%10;
sum/=10;
}
if(sum!=0){
cout<<ping[sum]<<" ";
}
for(i=j-1; i>=0; i--){
cout<<ping[m_reverse[i]];
if(i!=0){
cout<<" ";
}
}
cout<<"\n";
} else {
cout<<ping[sum]<<"\n";
}
return 0;
}
|