1009 說反話 (20分)
給定一句英語,要求你編寫程式,将句中所有單詞的順序颠倒輸出。
輸入格式:
測試輸入包含一個測試用例,在一行内給出總長度不超過 80 的字元串。字元串由若幹單詞和若幹空格組成,其中單詞是由英文字母(大小寫有區分)組成的字元串,單詞之間用 1 個空格分開,輸入保證句子末尾沒有多餘的空格。
輸出格式:
每個測試用例的輸出占一行,輸出倒序後的句子。
輸入樣例:
Hello World Here I Come
輸出樣例:
Come I Here World Hello
09 說反話 (20分)**
給定一句英語,要求你編寫程式,将句中所有單詞的順序颠倒輸出。**輸入格式:**測試輸入包含一個測試用例,在一行内給出總長度不超過 80 的字元串。字元串由若幹單詞和若幹空格組成,其中單詞是由英文字母(大小寫有區分)組成的字元串,單詞之間用 1 個空格分開,輸入保證句子末尾沒有多餘的空格。**輸出格式:**每個測試用例的輸出占一行,輸出倒序後的句子。
輸入樣例:
Hello World Here I Come
輸出樣例:
Come I Here World Hello
解題思路:
**
從後往前讀入,讀到空格,把空格後面的單詞輸出
PAT不能用gets(),可以用fgets()代替gets()
fgets的用法:
fgets函數的調用形式如下:fgets(str,n,fp);
-
同樣是輸入123
gets隻有一次換行,這是因為程式的語句printf(“%s\n”,str)
fgets有兩次,而第二次是其本身把回車換行符存入了字元串裡
是以,gets的長度隻有3和輸入的字元串長度一樣,fgets是4,多出來的是回車換行符。
- fp是檔案指針。stdin,表示輸入流,指從鍵盤輸入,
#include<bits/stdc++.h> //萬能頭檔案
using namespace std;
char s[86];
int main(){
fgets(s,82,stdin);
int len,i;
len=strlen(s);
s[len-1]='\0';//fgets有兩次,而第二次是其本身把回車換行符存入了字元串裡。
//手動将\n位置處的值變為\0,代表輸入的結束。
for(i=len-1;i>0;i--){
if(s[i]==' ') {
printf("%s",&s[i+1]);//用取位址符,取到'\0'
printf("%c",s[i]);//輸出空格
s[i]='\0';//手動将最後的位置變為'\0'
}
}
if(i==0) printf("%s\n",s);
return 0;
}