1005. Spell It Right (20)

Posted chanwunsam

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1005. Spell It Right (20)相关的知识,希望对你有一定的参考价值。

技术分享图片

分数只有20分,所以题目是很简单的。难点就是如何处理整形转化字符,以及字符转化整形的问题。

/* 题目:1005      */
/* 作者:ChanWunsam    */
/* 时间:2017.12.21    */
#include <cstdio>
#include <queue>
#include <vector>
#include <map>
#include <string>
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;

int main()
{
    int i, j, sum, digit, num;
    char N[101], S[4];
    
    /* 计算数字 */
    cin>>N;
    sum=0;
    for(i=0; N[i]!=‘‘; i++)
    {
        sum+=N[i]-‘0‘;
    }
    
    /* 处理字符串转化为int类型 */ 
    i=0;
    num=0;
    digit=10;
    if(sum==0)              /* 处理特殊情况 */
        S[i++]=0+‘0‘;
    while(sum!=0)
    {
        num=sum%digit;
        sum/=digit;
        S[i++]=num+‘0‘;
    }
    S[i]=‘‘;      /* 如果这道题是单纯的转化问题,一定要加这句 */
    //cout<<S<<endl;
    
    /* 逆序输出 */
    for(j=i-1; j>=0; j--)
    {
        switch(S[j]-‘0‘)
        {
            case 0: cout<<"zero"; break;
            case 1: cout<<"one";  break;
            case 2: cout<<"two";  break;
            case 3: cout<<"three"; break;
            case 4: cout<<"four"; break;
            case 5: cout<<"five"; break;
            case 6: cout<<"six";  break;
            case 7: cout<<"seven"; break;
            case 8: cout<<"eight"; break;
            case 9: cout<<"nine"; break;
        }
        if(j)
            cout<<" ";
    }
    
    return 0;
}

时间复杂度没什么说的,这道题看不出差距。用string可能会再好一点?

技术分享图片


不过这道题也暴露了我的一些问题。由于完全靠自学,我不知道要从哪方面着手,只能按照一些大佬的方法来。像atoi()函数和itoa()函数按理来说应该是要掌握源码的,可惜我还不会。突然又想起学了这么久的C/C++,我却做不出哪怕一个小项目,也就是比不上一个大一新生。本打算现在就着手做一个小项目,但是临近期末了,压力是有点大的。不光怎样,先把本周的任务搞定了吧。

以上是关于1005. Spell It Right (20)的主要内容,如果未能解决你的问题,请参考以下文章

1005. Spell It Right (20)

1005. Spell It Right (20)

1005. Spell It Right (20)

1005. Spell It Right (20)

1005. Spell It Right (20)(模拟题)

1005. Spell It Right(20)—PAT 甲级