PAT乙级刷题·1002

「1002写出这个数」


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

输入格式:

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

输出格式:

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

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

解题思路:

方法一:首先将10个数字的拼音用数组存储,使用string类型存储输入的n值,string类型的每个字符减去‘0’字符,得到整型的数字。挨个相加得到各数字总和sum。通过%和/的计算,将总和sum的每个数字放入vector动态数组中,最后倒序输出对应数字的拼音。这里要注意格式要求。

方法二:使用to_string函数将int型的sum直接转换成string类型,则不用%和/的方式求各个数字。每个字符减去‘0’字符得到对应的整型数字,最后再顺序输出对应数字的拼音。


C++代码:

方法一:

#include 
#include 
#include 
using namespace std;

int main(int argc, const char * argv[]) {
    
    string pinyin[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    string n;
    cin >> n;
    
    int sum=0;
    for(int i=0;i vec;
    while(sum){
        a = sum%10;//取出一个数
        vec.push_back(pinyin[a]);//将数字对应的拼音放进vec数组
        sum = sum/10;//去掉一个数
    }

    for(int j=(int)vec.size()-1;j>=0;j--){//倒序输出拼音
        cout<

方法二:

#include 
#include 
#include 
using namespace std;

int main(int argc, const char * argv[]) {
    
    string pinyin[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    string n;
    cin >> n;
    
    int sum=0;
    for(int i=0;i

 

你可能感兴趣的:(PAT刷题之路)