codeVS之旅:1205 單詞翻轉
阿新 • • 發佈:2018-11-09
題目描述 Description http://codevs.cn/problem/1205/
給出一個英語句子,希望你把句子裡的單詞順序都翻轉過來
輸入描述 Input Description
輸入包括一個英語句子。
輸出描述 Output Description
按單詞的順序把單詞倒序輸出
樣例輸入 Sample Input
I love you
樣例輸出 Sample Output
you love I
資料範圍及提示 Data Size & Hint
簡單的字串操作
解答:這個水題把我卡住了,因為我忘記了c的gets函式和scanf函式對字串操作該怎麼使用了。從別處查到資料:
gets(s)函式與 scanf("%s",&s) 相似,但不完全相同,使用scanf("%s",&s) 函式輸入字串時存在一個問題,就是如果輸入了空格會認為字串結束,空格後的字元將作為下一個輸入項處理,但gets()函式將接收輸入的整個字串直到遇到換行為止。
然後我就寫出了下面的解法:
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int main() { int i,n=0; char a[1000]; char b[100][100]; gets(a); int j=0,k=0; for(int i=0; a[i] != '\0'; i++) { if(a[i]!=' ') { b[j][k]=a[i]; k++; }else { j++; k=0; } } for(int i=j; i>=0; i--) cout<<b[i]<<' '; return 0; }
然後我看了別人的題解,感覺最簡單的就是使用模版來做了:
#include<bits/stdc++.h>
using namespace std;
int main(){
int i=0;
string s[1005];
while(cin>>s[i]){
i++;
}
while(i--){
cout<<s[i]<<' ';
}
return 0;
}
查閱了一下#include<bits/stdc++.h>包含了目前c++所包含的所有標頭檔案。真是神器。
而c++中也有字串類:標準庫型別string表示可變長的字元序列,為了在程式中使用string型別,我們必須包含標頭檔案: #include <string>
如果使用這個就只需要上面的幾行程式碼,實在是很方便!