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)的主要内容,如果未能解决你的问题,请参考以下文章