题目来源:http://ica.openjudge.cn/string/2/
B:单词倒排
总时间限制: 1000ms 内存限制: 65536kB
描述
编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。
输入
输入为一个字符串(字符串长度至多为100)。
输出
输出为按要求排序后的字符串。
样例输入
I am a student
样例输出
student a am I
--------------------------------------------------------------
思路
注意cin >> str会在空格处停止,要读入一行含有空格的字符串有2种方法:
string s;
getline(cin, s);
或者
char s[105];
cin.getline(s, 105);
-----------------------------------------------------
代码
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main()
{
#ifdef ONLINE_JUDGE
string s;
getline(cin, s);
int n = s.size(),i = n-1,k,j=n-1;
char ch;
while (i>=0)
{
ch = s.at(i);
if (ch==' ')
{
for (k=i+1; k<=j; k++)
{
cout << s.at(k);
}
j = i-1;
cout << " ";
}
else if (i==0)
{
for (k=0; k<=j; k++)
{
cout << s.at(k);
}
}
i--;
}
#endif
#ifndef ONLINE_JUDGE
ifstream fin ("B.txt");
string s;
getline(fin, s);
int n = s.size(),i = n-1,k,j=n-1;
char ch;
while (i>=0)
{
ch = s.at(i);
if (ch==' ')
{
for (k=i+1; k<=j; k++)
{
cout << s.at(k);
}
j = i-1;
cout << " ";
}
else if (i==0)
{
for (k=0; k<=j; k++)
{
cout << s.at(k);
}
}
i--;
}
fin.close();
return 0;
#endif
}