我又回来了,记录一下一些好的点子。
1009 说反话 (20 分)
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
#include<cstdio>
#include<string>
#include<stack>
#include<iostream>
using namespace std;
int main(){
string s;
stack<string> st;
while(cin>>s){
st.push(s);
}
cout<<st.top();
st.pop();
while(!st.empty()){
cout<<" "<<st.top();
st.pop();
}
return 0;
}
本题有几个关键点,其实并不难:
1、栈的使用,注意调用头文件#include<stack>.压栈: push();弹出栈顶,pop();求栈顶元素:top();
2.本题要求的输出格式问题,每个输出元素中间空一格,行末没有空格。
可以采用先输出第一个元素然后后面使用" "+元素的形式。
3.如何读入字符串?
string s;
while(cin>>s){
}
的方法判定是否还有字符串读入。
---------------------------------------------
cin是输入操作符,cin>>a的过程是先取得从键盘的输入值a,并将a赋给cin,因此while(cin>>a)的意思就是只要输入的值有效,那么就执行while体内的语句。
-----------------------------------------------
既可以判断是否结束,又可以读入字符串。