美文网首页
1009说反话

1009说反话

作者: advanced_slowly | 来源:发表于2019-09-29 17:56 被阅读0次

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

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

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

    输入样例:
    Hello World Here I Come
    输出样例:
    Come I Here World Hello

    思路:题目没有给出输入的字符串的个数,所以不能用以往的for循环来录入。所以我们用while循环来录入输入样例,根据用户有没有按下回车来作为循环中止的条件。回车键用字符'\n'表示。根据输入输出可以发现这恰巧像先进后出的栈一样,所以可以考虑用栈来实现。
    实现如下:

    #include <iostream>
    #include <stack>
    using namespace std;
    
    int main()
    {
        char c; //接受空格,回车这些字符,用来作为while循环的中止条件
        string str;
        stack<string>obj;
        do
        {
            cin >> str;
            obj.push(str);
        } while ((c = getchar()) != '\n');  //getchar函数可以接受用户录入的一个字符
        while (obj.size())
        {
            cout << obj.top();
            if (obj.size() != 1)
            {
                cout << " ";
            }
            obj.pop();
        }
        cout << endl;
        return 0;
    }
    
    

    当然了,这里用动态数组vector来实现说反话也是可以的。

    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main()
    {
        string str;
        vector<string>vec;
        char c;
        do
        {
            cin >> str;
            vec.push_back(str);
        } while ((c = getchar()) != '\n');
        for (int i = vec.size() - 1 ; i >= 0 ; i--)
        {
            cout << vec[i];
            if (i != 0)
            {
                cout << " ";
            }
        }
        cout << endl;
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:1009说反话

          本文链接:https://www.haomeiwen.com/subject/cjkryctx.html