用了最直接的操作:需要注意百位为0,则不输出,如 012 直接输出 yi er 即可,且002直接输出 er 即可,若为 000 则输出ling即可。
#include <iostream>
#include <cstring>
using namespace std;
string zifu(int n)
{
if(n==0)
{
return "ling";
}
else if(n==1)
{
return "yi";
}
else if(n==2)
{
return "er";
}
else if(n==3)
{
return "san";
}
else if(n==4)
{
return "si";
}
else if(n==5)
{
return "wu";
}
else if(n==6)
{
return "liu";
}
else if(n==7)
{
return "qi";
}
else if(n==8)
{
return "ba";
}
else
{
return "jiu";
}
}
//编译器 c++(clang++)
int main()
{
char a[50];
cin>>a;
int len = strlen(a); //计算char中元素个数 sizeof(a);为该数组大小
int total=0;
for(int i=0;i<len;i++)
{
total+=a[i]-'0'; // '0' - '0' = 0 (int);
}
int h = total/100;
int d = total%100/10;
int g = total%10;
if(h!=0)
{
string hh = zifu(h);
string dd = zifu(d);
string gg = zifu(g);
string fin = hh+" " + dd + " "+gg;
cout<<fin;
}
else {
if(d!=0)
{
string dd = zifu(d);
string gg = zifu(g);
string fin = dd + " "+gg;
cout<<fin;
}
else{
string gg = zifu(g);
string fin = gg;
cout<<fin;
}
}
}