读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
解题代码:
#include<iostream>
#include<string.h>
#include<cmath>
using namespace std ;
int main()
{
string str ;
cin>>str ;
int length=str.length() ;
int sum=0 ;
for(int k=0 ;k<length ;k++)
{
sum+=str[k]-'0' ; //注意此处要减去'0' ;
}
int m=0 ;
while(sum>=pow(10,m))
m++ ;
// m+1就是sum的数位 ;
int r=m ;
int a[100] ;//用数组来存放sum的每一位数 ;
int i=0 ;
while(r--)
{
a[i++]=sum%10 ;
sum=sum/10 ;
}
for(int h=m-1 ;h>=0 ;h--)
{
if(a[h]==0)
cout<<"ling";
else if
(a[h]==1)
cout<<"yi";
else if
(a[h]==2)
cout<<"er";
else if
(a[h]==3)
cout<<"san";
else if
(a[h]==4)
cout<<"si";
else if
(a[h]==5)
cout<<"wu";
else if
(a[h]==6)
cout<<"liu";
else if
(a[h]==7)
cout<<"qi";
else if
(a[h]==8)
cout<<"ba";
else if
(a[h]==9)
cout<<"jiu";
if(h!=0)
cout<<" ";
}
return 0 ;
}