1. 程式人生 > >PAT-A 1005 Spell It Right

PAT-A 1005 Spell It Right

題目大意

給出一個非負整數N,要求對N的各個位數的數字進行求和,再將求和的數字以標準格式輸出。

其中標準格式為:將數字由高位到低位,以英文進行輸出,每個英文字母之間空一格,輸出尾部不能帶空格。

解題思路

輸入的數字會超過整形與長整形的範圍,因此不能用整形來接受輸入型別,應當用字串。

然後將字串各個位置的數字相加,再輸出結果就好。

注意要點

1.輸入數字會超限,應當用字串來儲存輸入。

2.注意輸入為零的情況。

#include <iostream>
#include <string>
#include <vector>
using namespace std;

string display(int n)
{
	switch (n)
	{
	case 0:return "zero";break;
	case 1:return "one";break;
	case 2:return "two";break;
	case 3:return "three";break;
	case 4:return "four";break;
	case 5:return "five";break;
	case 6:return "six";break;
	case 7:return "seven";break;
	case 8:return "eight";break;
	case 9:return "nine";break;
	default:break;
	}
}

int main()
{
	string str;
	cin>>str;
	int sum=0;
	for(int i=0;i<str.length();++i)
		sum+=str[i]-'0';
	
	vector<string> v;
	if(0==sum)
		v.push_back("zero");
	while(sum!=0)
	{
		v.push_back(display(sum%10));
		sum/=10;
	}
	cout<<v[v.size()-1];
	for(int i=v.size()-2;i>=0;--i)
		cout<<" "<<v[i];

	return 0;
}