编程题 7-32 说反话-加强版【PAT】

文章目录

编程练习题目集目录

题目

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

输入格式

测试输入包含一个测试用例,在一行内给出总长度不超过 500000 500 000 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。

输出格式

每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有 1 1 个空格。

输入样例

Hello World Here I Come

输出样例

Come I Here World Hello

题解

解题思路

利用堆栈先出后进的思想存储,首先输入一串字符,将每一个单词分别存入堆栈中(遇到一次空格就将当前单词压入堆栈中),然后遇到回车时开始输出,用一个变量控制空格的输出,然后一次将堆栈中的单词输出即可。

完整代码

#include <stack> #include <string> #include <iostream> using namespace std; int main(void) { string Word; // 输入一个单词 int flag = 0; // 输出空格控制 stack<string> stack; cout << "请输入一串字符串:"; // 提交时注释此行 while (cin.peek() != '\n') // cin.peek()返回值是一个char型字符,返回值是指针指向的当前字符,只观测指针停留在当前位置不后移 { if (cin.peek() == ' ') cin.get(); // cin.get()从指定的输入流中提取一个字符(包括空白字符),函数的返回值是读入的字符 else { cin >> Word; stack.push(Word); } } cout << "字符串倒叙输出为:"; // 提交时注释此行 while (!stack.empty()) { if (flag) cout << " "; else flag = 1; cout << stack.top(); stack.pop(); } return 0; }
本文是转载文章,点击查看原文
如有侵权,请联系 lx@jishuguiji.net 删除。