1. 程式人生 > >PAT 乙級 1009 說反話

PAT 乙級 1009 說反話

1009 說反話 (20 point(s))

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

輸入格式:

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

輸出格式:

每個測試用例的輸出佔一行,輸出倒序後的句子。

輸入樣例:

Hello World Here I Come

輸出樣例:

Come I Here World Hello

經驗總結: 

這一題,難度不是很大,就是從一個以空格為間隔的字串裡分割出所有的單詞並且逆向輸出,但是要注意,輸出一行你是用gets() 還是用 getline() 。 gets()編譯環境要選C,選C++會報編譯錯誤。getline()可以用於C++,但是getline()的輸入引數是(cin,string),注意定義型別不能用char陣列而是string容器。

AC程式碼

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

int main()
{
	string str;
	char ans[80][80];
	while(getline(cin,str))
	{
		int s=0,r=0;
		for(int i=0;i<str.size();++i)
		{
			if(str[i]!=' ')
			{
				ans[s][r++]=str[i];
			}
			else
			{
				ans[s][r]='\0';
				++s;
				r=0;
			}
		}
		ans[s][r]='\0';
		for(int i=s;i>=0;--i)
		{
			printf("%s",ans[i]);
			if(i!=0)
				printf(" ");
			else
				printf("\n");
		}
	}
	return 0;
}