愿你坚持不懈,努力进步,进阶成自己理想的人

—— 2017.09, 写给3年后的自己

PAT4:说反话

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。要求创建一个Sentence类,及反向输出的友元函数

输入格式:测试输入包含多个测试用例,每个用例占一行,在每一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

输出格式:输出倒序后的句子。

输入样例:
Hello World Here I Come
Hello

输出样例:
Come I Here World Hello
Hello

#include <iostream>
using namespace std;

class Sentence {
public:
    istream & read() {
       return getline(cin, str);
    }
    friend void reverse(Sentence &);
private:
    string str;
};

void reverse(Sentence & sentence) {
    int i,j=0;
    string words[15];
    words[0] = "";
    for(i=0; i<=sentence.str.length(); i++) {
        if(sentence.str[i] == ' ' || sentence.str[i] == '\0') {
            j++;
            words[j] = "";
        } else {
            words[j] = words[j] + sentence.str[i];
        }
    }
    for(i=j-1; i>=0; i--) {
        cout << words[i];
        if(i!=0) cout << " ";
    }
}

int main() {
    Sentence instance;
    while(instance.read()) {
        reverse(instance);
        cout << endl;
    }
    return 0;
}