定义sum,每读入一个字符就将对应的数字加到sum中(例如,读入‘5’,就使sum+5),用一个while循环得到所有数字相加的结果。
因为要从左到右用拼音输出sum,而用%取余的话是从右到左输出,所以不可行。在这里我们定义一个整数k用于表示当前sum的位数(具体实现在第一个for循环中)
再定义一个整数size用于表示sum的数量级,(比如sum=145的话,size=10^(k-1)=100,sum/size可以得到sum的第一位数字
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
char ch;
int k=1,sum=0;
while((ch=getchar())!='\n')
sum+=ch-'0';
for(int i=1;;i*=10)
{
if((sum/i)>10) k++;
else break;
}
string out[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
for(;k>=1;k--)
{
int size=pow(10,k-1);
if(k!=1)
cout<<out[(sum/size)]<<" ";
else cout<<out[sum];
sum=sum-(sum/size)*size;
}
return 0;
}