• PAT 1002 写出这个数


    PAT 1002 写出这个数

    题目:

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

    输入格式:

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

    输出格式:

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

    输入样例:

    1234567890987654321123456789  
    

    输出样例:

    yi san wu
    

    代码:

    #include <iostream>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    int main()
    {
        string input;
        string temp;
        int sum = 0;
        vector<string> output{"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
        cin>>input;    
        for(int i = 0;i < (int)input.size();++i){
            temp = input.substr(i,1);//利用substr抓取input指定位置指定长度的内容
            int a = stoi(temp);//使用stoi将 字符串-->数字
            sum += a;
        }
       	
        vector<int> num;
        int digit = 0;
        while(sum != 0){
            num.push_back(sum%10);//从个位开始,添加到num中去
            sum /= 10;
            ++digit;
        }
        for(int i = digit - 1;i > 0;--i){
            cout<< output[num[i]] <<" ";//输出对应的字符
        }cout<<output[num[0]];//由于题目要求最后不能空格,输出最后做一个修改
        return 0;
    }
    

    解析:

    将输入存为字符串,便于存取大数,同时按位进行操作求得各项之和.得出各位之值,查数组输出结果.

    关于substr():

    1. 用途:一种构造string的方法
    2. 形式:s.substr(pos, n)
    3. 解释:返回一个string,包含s中从pos开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos,即 不加参数会默认拷贝整个s )
    4. 补充:若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若pos+n的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾

    关于stoi():

    1. 用途: 将指定开头的字符串修改为指定进制(2 10 16 auto) 的数字(默认为10进制)
    2. 形式:
    int stoi (const string&  str, size_t* idx = 0, int base = 10);
    int stoi (const wstring& str, size_t* idx = 0, int base = 10);
    
    1. eg:
    int i_dec = std::stoi (str_dec,&sz);
    int i_hex = std::stoi (str_hex,nullptr,16);
    int i_bin = std::stoi (str_bin,nullptr,2);
    int i_auto = std::stoi (str_auto,nullptr,0);
    //stoi(s)也可以,直接默认全部以 十进制 转换
    
  • 相关阅读:
    大型网站应用中MySQL的架构演变史
    SRM 585 DIV2
    TC 配置插件
    Java中含有静态成员的的初始化顺序
    java 23种设计模式,一般情况下,常用的有哪些? 转载
    Java中的正则表达式
    C++ 中的关于输出的设置于
    C++实现可变参数列表
    Java中的组合与聚合
    pku 2284 That Nice Euler Circuit
  • 原文地址:https://www.cnblogs.com/EPZ11/p/12269830.html
Copyright © 2020-2023  润新知