1009 说反话 (20分)(好几种方法)

80 篇文章 0 订阅
15 篇文章 0 订阅

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

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

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

Hello World Here I Come

输出样例:

Come I Here World Hello

很简单,定义一个char类的二维数组,然后输入,当遇到回车的时候结束,再反向输出。注意空格的位置即可。

#include <iostream>
#include<bits/stdc++.h>
#include<map>
#include<string> 
#include<set>
#include<stack>
#include<queue>
#include<algorithm>
#include<unordered_set>
using namespace std;
int main() {
	char name[80][80];
	int i=0;
	while(scanf("%s",name[i])!=EOF){
		i++;
	}
	for(int j=i-1;j>=0;j--){
		cout<<name[j];
		if(j>0){
			cout<<" ";
		}
	}
	cout<<endl;
	return 0;
}


上面的太基础了,这样的先入后出直接用栈做最方便

#include <iostream>
#include<bits/stdc++.h>
#include<map>
#include<string> 
#include<set>
#include<stack>
#include<queue>
#include<algorithm>
#include<unordered_set>
using namespace std;
int main() {
	stack<string >s;
	string s1;
	while(cin>>s1) s.push(s1);//将输入的单词压栈
	cout<<s.top();//先输出第一个元素,剩下的前面有空格
	s.pop();//移除栈顶元素
	while(!s.empty()){
		cout<<" "<<s.top();
		s.pop();
	}
	return 0;
}


第三种,用到了string和vector

#include <iostream>
#include<bits/stdc++.h>
#include<map>
#include<string> 
#include<set>
#include<stack>
#include<queue>
#include<algorithm>
#include<unordered_set>
using namespace std;
int main() {
	string s;
	getline(cin,s);//getline可以读空格
	vector<string>v; 
	string t="";
	for(int i=0;i<s.size();i++){
		if(s[i]=='\n') break;//读到回车退出
		if(s[i]!=' ') t+=s[i];//如果不是空格,字符串总后往前放入t中
		else{//如果是空格,将t放入vector中
			v.push_back(t);
			t="";
		}
	}
	v.push_back(t);//注意将最后一个单词放入vector中
	for(int i=v.size()-1;i>=0;i--){
		cout<<v[i];
		if(i>0){
			cout<<" ";
		}
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_努力努力再努力_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值