百练 / 2017大数据研究中心夏令营上机考试 B:单词倒排

题目来源: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
#include
#include
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
}


你可能感兴趣的:(百练OJ/poj,Cpp)