1. 程式人生 > >codeVS之旅:1205 單詞翻轉

codeVS之旅:1205 單詞翻轉

題目描述 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> 

如果使用這個就只需要上面的幾行程式碼,實在是很方便!