PAT训练-1009. 说反话 (20)

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

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

输出格式:每个测试用例的输出占一行,输出倒序后的句子。

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello

代码:

#include <iostream>

#include <stack>

using namespace std;

int main(int argc, const char * argv[]) {

    stack<char*> myset;

    char * line = new char[100];

    for(int i = 0;i < 100;i++)

        line[i]=‘\0’;

    cin.getline(line, 99);

    for(int i = 0; line[i]!=‘\0’;i++)

    {

        int j = 0;

        for(j = i;line[j]!=‘\0’;j++)

        {

            if(line[j] == ‘ ‘)

                break;

        }

        char *temp = new char[100];

        for(int k= 0;k < 100;k++)

            temp[k]=‘\0’;

        for(int k = 0;k<j-i;k++)

            temp[k]=line[i+k];

        myset.push(temp);

        i = j;

    }

    

    char *temp = myset.top();

    cout<<temp;

    myset.pop();

    while (!myset.empty()) {

        temp = myset.top();

        cout<<” “<<temp;

        myset.pop();

    }

    

}

发表评论