PAT乙级1002写出这个数

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

输入格式:

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

输出格式:

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

样例

输入

1234567890987654321123456789

输出  

yi san wu

知识:

#include<string>
std::to_string(int)

std::to_string(long)

std::to_string(long long)

std::to_string(float)

std::to_string(double)

std::to_string(long double)
//#include<cstdlib>

//标准库函数,但是使用时一般会配合<string>

 

std::stoi

std::stol

std::stoll

//看名字就知道对应为int,long,long long
int stoi (const string&  str, size_t* idx = 0, int base = 10)
 
//idx是一个指针,该指针指向一个size_t类型的对象
//传入指针地址后,该对象的值会被修改为string中数值后的第一个字符所在位置
//例如stoi("123abcd",&p),返回的p指向a所在
//也可以把p的位置理解为数值部分的结束位置
//int base是进制基数,默认10进制没什么好说的
//需要注意的是stoi实质上是调用stol的

参考:https://blog.csdn.net/w55100/article/details/79886788

 

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    string pin[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    string n;
    cin>>n;
    int sum=0;
    for(int i=0;i<n.length();i++){
        sum+=n[i]-'0';
    }
    string num=to_string(sum);
    for(int i=0;i<num.length();i++){
        if(i!=0)
            cout<<" ";
        cout<<pin[num[i]-'0'];
    }
}

 

 

posted @ 2021-09-23 19:31  Los1r  阅读(33)  评论(0)    收藏  举报