PAT 乙級 1009 說反話
阿新 • • 發佈:2019-01-03
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; }