读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10
100
。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
- 题意
将输入的一串数字求和,并按照汉语拼音输出
- 思路
利用字符串输入,将字符串转换为数字并求和
将和存储到数组中,按序进行数字与拼音的转换并输出
注意空格处理
- 代码
#include<iostream>
#include<string.h>
using namespace std;
int main(){
string s;
int i,n;
int sum=0;
cin>>s;
n=s.length();
for(i=0;i<n;i++){
sum+=s[i]-'0';
}
int len=0;
int k=sum;
while(sum){
if(sum/10!=0)
len++;
sum/=10;
}
len++;
int str[len]={
0};
for(i=0;i<len;i++){
str[i]=k%10;
k/=10;
}
for(i=len-1;i>=0;i--){
switch(str[i]+'0'){
case '0':cout<<"ling";break;
case '1':cout<<"yi";break;
case '2':cout<<"er";break;
case '3':cout<<"san";break;
case '4':cout<<"si";break;
case '5':cout<<"wu";break;
case '6':cout<<"liu";break;
case '7':cout<<"qi";break;
case '8':cout<<"ba";break;
case '9':cout<<"jiu";break;
}
if(i!=0)
cout<<" ";
}
return 0;
}