1
题目要求:

给定一个非负整数,将其每一位进行相加,然后对结果的每一位从左往右输出其对应的英文数字

算法思路:

由于整数大小最大为10^100,得用string存储才行,对string中的每一位减去'0'后进行求和,然后再转化为string,从左往右依次输出对应每一位的英文字母,为了方便对最终结果的每一位进行输出建立从数字到英文单词的映射numToWords,下标表示每一位数字,其值代表对应的英文单词。

提交结果:

截屏2020-10-10 上午9.31.52.png

AC代码:
#include<cstdio>
#include<string>
#include<iostream>

using namespace std;

string numToWords[10] = {"zero","one","two","three","four","five","six","seven","eight","nine"};

int main(){
    string a;
    cin>>a;
    //对每一位进行求和
    int sum = 0;
    for(int i=0;i<a.length();++i){
        sum += (a[i]-'0');
    }
    //然后将sum转化为string方便对每一位进行操作
    string s = to_string(sum);
    for(int i=0;i<s.length();++i){
        cout<<numToWords[s[i]-'0'];
        if(i<s.length()-1) cout<<" ";
    } 
    return 0 ;
}

乔梓鑫
569 声望17 粉丝

主要分享个人学习经验和心得