描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
数据范围:输入的字符串长度满足
注意本题有多组输入
输入描述:
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述:
得到逆序的句子
思路:
示例
输入:I am a boy
输出:boy a am I
输入:nowcoder
输出:nowcoder
实现1
#include<iostream>
#include<string>
#include<algorithm>
#include <vector>
using namespace std;
int main() {
vector<string> cur;
string s;
while (cin >> s) {
cur.push_back(s);
}
reverse(cur.begin(), cur.end());
for (int i = 0; i < cur.size(); ++i) {
if (i) cout << " ";
//当i等于0时,这个不会执行
cout << cur[i];
}
cout << endl;
return 0;
}
实现2
- 倒序找空格
- 正序输出单词
- 最终输出时用空格分开单词
#include<stdio.h>
#include<string.h>
int main()
{
char val[1000]={0};
//输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
gets(val);
int len = strlen(val);
int end = len;
for(int i=len-1; i>=-1; i--){
//通过倒着找空格判断单词
if((val[i] == ' ') || (i==-1)){
//正序输出找到的单词
for(int j=i+1; j<end; j++){
printf("%c",val[j]);
}
end = i;//将结束位置向前移动
printf(" ");//通过空格分隔
}
}
return 0;
}