1005 Spell It Right

本题传送门

这道题有一个点就是0,我是用while(ans)来取出每一位的,但是如果ans本身就是0,就不会进入循环,所以我改了一下,当然,这种错误即使不看反馈,应该也比较容易发现

#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
//10的100次方就是100位的数字

int main()
{
    string mp[10] = {"zero" , "one" , "two" , "three" , "four" , "five" , "six" , "seven" , "eight" , "nine" };
    string a;cin>>a;
    int len = a.size();
    int ans = 0;
    for(int i = 0 ; i < len ; i++)
    {
        ans += a[i] - '0';
    }
    
    vector<string> res;
    
    while(1)
    {
        res.push_back(mp[ans%10]);
        ans /= 10;
        if(ans ==  0) break;
    }
    
    for(int i = res.size() - 1 ; i >= 0 ; i --) 
    {
        cout<<res[i];
        if( i != 0 ) cout<<" ";
    }
    
    return 0;
}
posted @ 2026-03-29 19:08  shuiwangrenjia  阅读(6)  评论(0)    收藏  举报