1002. 写出这个数 (20)-PAT乙级

来源:互联网 发布:手表选择 知乎 编辑:程序博客网 时间:2024/05/20 19:18

题目:

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu

解答:

#include<iostream>using namespace std;int main(){    string n;    cin >> n;    int l = n.length();    int *a = new int[l];//##    int sum=0;    string str[10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };    for (int i = 0; i < l; i++)sum += (n[i] - '0');//##    int *b = new int[l];##    int j = 0;    if (sum == 0) //特殊值0,pat上没有加入测试点,但代码的严谨要求我们还是要写的。        cout << "ling";    else    {        for (; sum > 0; j++)        {            b[j] = sum % 10;            sum /= 10;        }    }    for (int i = j - 1; i >= 1; i--)cout << str[b[i]]<<" ";    cout << str[b[0]];    delete[] a;//##    delete[] b;//##    return 0;}

总结:

  1. int *a = new int[l];##以这种方式来建立不知道确切长度的数组
    delete[] b;##不要忘了在结尾要清空
  2. 利用数组n[i] - ‘0’的方式获得某个string面值相同的数字(int)
0 0
原创粉丝点击