【PAT——1002 写出这个数】

1002 写出这个数

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

输入格式:

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

输出格式:

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

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

代码实现

//c++
#include <iostream>
#include <string>
using namespace std;

// 拼音数字数组,下标对应数字
string pinyin[] = {
    
    "ling", "yi", "er", "san", "si", 
                   "wu", "liu", "qi", "ba", "jiu"};

int main() {
    
    
    string n;
    cin >> n; // 输入字符串 n
    int digit_sum = 0; // 数字和初始化为 0
    for (char c : n) {
    
     // 遍历字符串 n 中的每个字符
        digit_sum += c - '0'; // 将字符转换为数字并加到数字和中
    }
    string sum_pinyin = to_string(digit_sum); // 将数字和转换为字符串
    for (int i = 0; i < sum_pinyin.size(); i++) {
    
     // 遍历字符串 sum_pinyin 中的每个字符
        int digit = sum_pinyin[i] - '0'; // 获取当前数字字符对应的数字
        cout << pinyin[digit]; // 输出该数字的汉语拼音
        if (i != sum_pinyin.size() - 1) {
    
     // 如果不是最后一个数字字符,则输出空格
            cout << " ";
        }
    }
    cout << endl; // 输出换行符
    return 0; // 程序结束
}


# python
# 定义字典,用于将数字转换为拼音
pinyin_dict = {
    
    
    0: 'ling',
    1: 'yi',
    2: 'er',
    3: 'san',
    4: 'si',
    5: 'wu',
    6: 'liu',
    7: 'qi',
    8: 'ba',
    9: 'jiu'
}

# 读入正整数 n
n = input().strip()

# 计算各位数字之和
digit_sum = sum(int(x) for x in n)

# 将数字之和转换为拼音并输出
digits = [int(x) for x in str(digit_sum)]
print(' '.join(pinyin_dict[d] for d in digits))

总结

c++:
  1. for (char c : n) // 遍历字符串 n 中的每个字符,是c++11的语法
  2. string sum_pinyin = to_string(digit_sum); // 将数字和转换为字符串,to_string是相关的函数
python:
  1. python字典其实就是STL中的map,是一系列键值对的组合
  2. input().strip()//strip()可以用来去除输入时的空格
  3. python中可以用int(),str()进行数字与字符串之间转换,较为方便
  4. ' '.join(...) 则是使用空格字符 ' ' 把一组字符串连接成一个新的字符串。在这里,连接的是一个表达式 pinyin_dict[d] 的结果组成的迭代器,迭代器中的每个元素都表示一个数字的汉语拼音。

猜你喜欢

转载自blog.csdn.net/muzillll/article/details/130959855
今日推荐