问题描述
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字
输入格式
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于
10
100
10^{100}
10100
输出格式
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格
样例输入
1234567890987654321123456789
样例输出
yi san wu
C++代码
#include<bits/stdc++.h>
using namespace std;
int EachDegree[10];
int SumEachDegree(char c[]){
int sum=0;
for(int i=0;i<strlen(c);i++){
sum+=c[i]-'0';
}
return sum;
}
int Store(int n){
int d=0;
for(int i=0;;i++){
if(n==0) break;
EachDegree[i]=n%10;
n/=10;
d++;
}
return d;
}
void Output(int a[],int d){
while(d--){
switch(a[d]){
case 0:printf("ling");break;
case 1:printf("yi");break;
case 2:printf("er");break;
case 3:printf("san");break;
case 4:printf("si");break;
case 5:printf("wu");break;
case 6:printf("liu");break;
case 7:printf("qi");break;
case 8:printf("ba");break;
case 9:printf("jiu");break;
}
if(d!=0) printf(" ");
}
}
int main(){
char c[1000];
int i=0;
cin.getline(c,1000);
int sum=SumEachDegree(c);
int degree=Store(sum);
Output(EachDegree,degree);
return 0;
}
备注
原来读入一串字符写的是
gets(c);
结果一直答案错误,后来改成这个才AC
cin.getline(c,1000);