码迷,mamicode.com
首页 > 其他好文 > 详细

PAT乙级1002

时间:2019-12-31 10:59:11      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:out   字符   拼音   namespace   str   iostream   状态   png   inf   

1002 写出这个数 (20分)

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

输入格式:

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

输出格式:

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

输入样例

1234567890987654321123456789

输出样例

yi san wu

我的理解

因为自然数n可能为很大的数字,所以使用字符串接受输入,然后遍历每个字符,相加得出各位数字之和,计算和之后需要再转化为字符串,然后根据数字与汉语拼音的映射输出即可。

代码段

#include <iostream>
#include <string>
#include <stdlib.h>
#include <sstream>
using namespace std;
int main(int argc, char** argv) {
    string seq;
    int number = 0;
    string map[] = {"ling", "yi", "er", "san", "si", "wu",
    "liu", "qi", "ba", "jiu"};
    cin >> seq;
    // 计算各位数字之和
    for (char i : seq) {
        number += i - 48;
    }
    stringstream ss;
    ss << number;
    // 将数字之和转化为字符串
    string result = ss.str();
    // 映射输出汉语拼音
    int length = result.length();
    for (int i = 0; i < length; i++){
        cout << map[result[i] - 48];
        if (i != length-1 ){
            cout << " ";
        }
    }
}

> ps:字符在进行整数运算时,会以字符对应的ASSCI码的十进制的值进行计算,所以需要进行转换。ASSCI码的部分表如下。还有调试时的状态。

技术图片

技术图片

PAT乙级1002

标签:out   字符   拼音   namespace   str   iostream   状态   png   inf   

原文地址:https://www.cnblogs.com/another-7/p/12122708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!