1009 说反话(20)
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
输出格式:每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
遍历字符串,记录空格的位置,从最后一个空格位置向末尾输出,在从下一个空格位置向空格位置输出,第一段英文单独输出。
#include<iostream>
#include<string>
using namespace std;
int a[81];
int main() {
string b;
getline(cin, b);
int p = b.length(), q = 0, m = 0;
if (p == 0)return 0;
a[q++] = 0;
for (int i = 0; b[i] != '\0'; i++) {
if (b[i] == ' ')a[q++] = i;
}
a[q] = p - 1;
if (q > 1) {
for (int i = q; i > 1; i--) {
for (int j = a[i - 1] + 1; j <= a[i]; j++) {
cout << b[j];
if (j == p - 1) cout << " ";
}
}
for (int i = 0; i < a[1]; i++) {
cout << b[i];
}
}
else cout << b;
cout << endl;
return 0;
}