PAT乙級1009

1009 說反話 (20分)

題目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805314941992960ios

給定一句英語,要求你編寫程序,將句中全部單詞的順序顛倒輸出。函數

輸入格式:

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

輸出格式:

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

輸入樣例

Hello World Here I Come

輸出樣例

Come I Here World Hello

個人理解

從後往前,每遇到一個空格,輸出這個空格以後的一個單詞,而後更改單詞尾的位置。在遍歷一遍以後,由於第一個單詞以前沒有空格,因此剩餘第一個單詞未輸出,輸出第一個單詞便可。code

代碼段

#include<iostream>
//#include<string>
#include<string.h>
using namespace std;
int main() {
    //  #include<string> 中的函數 
    //  string words;
    //  getline(cin, words);

    char words[80];
    // #include<string.h> 中的函數  
    // 第二位參數表明容許輸入的字符個數,小於,不會等於 ,例如81 只能輸入80個字符 
    cin.getline(words, 81);
    int length = strlen(words);
    int indexA = length - 1;
    int indexZ = length;
    for ( ; indexA >= 0; indexA--) {
        if (words[indexA] == ' ') {
            for (int index = indexA + 1; index < indexZ; index++) {
                cout << words[index];
            }
            cout << ' ';
            indexZ = indexA;
        }
    }
    // 循環結束後,indexA 等於 -1;
    // 剩餘第一個單詞未輸出
    for (indexA++; indexA < indexZ; indexA++) {
        cout << words[indexA];
    }
    return 0;
}
相關文章
相關標籤/搜索