题目为:

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 1。

输出格式:

在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1234567890987654321123456789
 

输出样例:

yi san wu

代码实现:

#include <iostream>
#include<algorithm>
#include<string.h>
using namespace std;
//数值超过了Int的表示范围,使用字符串处理
int main(){
//定义一个string类的数组存储和
string number;
int sum=0;
string eg[10] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
char ch;//输入字符存储数字
while((ch=getchar())!='\n')
sum+=(ch-'0');//减去字符'0',变为Int 型,并累加
int temp=sum,count=0;
while(temp){// 计算和的位数
temp/=10;
count++;
}
//将每一位顺序存储进string数组中
for(int k=count-1;k>=0;k--){
number[k]=sum%10+'0';
sum=sum/10;
}
//控制输出
for(int k=0;number[k]!=0;k++){
if(k>0)
printf(" ");
cout<<eg[number[k]-'0'];
}
return 0;
}


posted on 2020-02-02 16:27  董南  阅读(78)  评论(0编辑  收藏  举报