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++,我却做不出哪怕一个小项目,也就是比不上一个大一新生。本打算现在就着手做一个小项目,但是临近期末了,压力是有点大的。不光怎样,先把本周的任务搞定了吧。

原文地址:https://www.cnblogs.com/ChanWunsam/p/10018223.html