編程題目:PAT 1009. 說反話 (20)


1009. 說反話 (20)

時間限制
400 ms
內存限制
32000 kB
代碼長度限制
8000 B
判題程序
Standard
作者
CHEN, Yue

給定一句英語,要求你編寫程序,將句中所有單詞的順序顛倒輸出。

輸入格式:測試輸入包含一個測試用例,在一行內給出總長度不超過80的字符串。字符串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字符串,單詞之間用1個空格分開,輸入保證句子末尾沒有多余的空格。

輸出格式:每個測試用例的輸出占一行,輸出倒序后的句子。

輸入樣例:
Hello World Here I Come
輸出樣例:
Come I Here World Hello

        題目描述如上,解決辦法並不復雜,只要按照空格進行拆分,然后倒序輸出即可。以下給出兩種方法,一種就是純粹的順次掃描來拆分,另一種利用strtok進行拆分,值得一提的是,倒序輸出,可以考慮存在堆棧里面(以下代碼並未如此實現),參考代碼。

/*
http://pat.zju.edu.cn/contests/pat-b-practise/1009
*/
#include<iostream>
#include<string.h>
#include<vector>
using namespace std;
int main()
{
	vector<string> v;
	string str;
	getline(cin,str);
	string tmp="";
	for(int i=0;i<str.length();i++)
	{
		if(str[i]=='\n')
			break;
		if(str[i]!=' ')
			tmp += str[i];
		else
		{
			v.push_back(tmp);
			tmp="";
		}
	}
	v.push_back(tmp);
	for(int i=v.size()-1;i>=0;i--)
	{
		if(i!=0)
			cout<<v[i]<<" ";
		else
			cout<<v[i];
	}
	system("pause");
	return 0;
}

//方法二,用strtok函數切分
#include<iostream>
#include<string.h>
#include<vector>
using namespace std;
int main()
{
	char str[80];
	const char *ch = " ";
	char *result;
	vector<char *> v;
	gets(str);//注意用的是gets()可以連帶空格都掃描進去

	result = strtok(str,ch);
	while(result!=NULL)
	{
		v.push_back(result);
		result = strtok(NULL,ch);
	}
	for(int i=v.size()-1;i>=0;i--)
	{
		if(i!=0)
			cout<<v[i]<<" ";
		else
			cout<<v[i];
	}
	system("pause");
	return 0;	
}



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM