PAT 1002 写出这个数 (20)(20 分)

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

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

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

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

因为道题求的是自然数n的各位数字之和,而且数字范围较大,所以用字符串实现比较好。
#include<iostream>
using namespace std;
int main(){
    string n;
    int i;
    string k[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};//保存最后算出的数对应的拼音字符串
    cin>>n;
    int a[10000];
    long h=0;
    for(i=0;i<n.length();i++){
        h+=n[i]-'0';
    }
    int m=10;
    for(i=0;h>=10;i++){//只要各位数字的和大于0,就进行取余保存在数组a中,并将h除以10。
        a[i]=h%m;
        h=h/m;
    }
    a[i]=h;//将本来算出的各位数之和的最高位存入数组a中。
    for(int j=i;j>0;j--){
        cout<<k[a[j]]<<" ";
    }
    cout<<k[a[0]];
}
原文地址:https://www.cnblogs.com/fromzore/p/9523372.html