hdu1062--Text Reverse

hdu1062--Text Reverse_第1张图片嗯…短短的一道题我把能犯的错都犯了一遍…
这个题有一个输入的问题
就是最后一行的这个输入后面应该是没有回车的,有人会问没有回车咋输入?额,当然使用文件输入啊喂(#`O′)!
我用freopen试了一下之后发现是可以的,最后一行的结尾算做是EOF
所以不能用计算回车的方式来实时输出,应该会死循环。还有就是空格的问题,如果两个单词之间的空格只能有一个的话,显然直接scanf+%s就可以了,但这个题不是…
所以代码:

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include
using namespace std;

int main(void)
{
	freopen("C:\\Users\\Desktop\\1211.txt", "r", stdin);
	int n;
	scanf("%d", &n);
	getchar();
	int cnt = 0;
	//之前代码的错误在于单词与单词之间可能有多个空格
	for (int j = 0; j < n; j++)
	{
		char p[2000];
		gets_s(p);
		int len = strlen(p);
			p[len] = '\n';
			len++;
		string s;
		for (int i = 0; i < len; i++)
		{
			if(p[i]!=' '&&p[i]!='\n')
			   s.push_back(p[i]);
			else
			{
				reverse(s.begin(), s.end());
				printf("%s", s.c_str());
				s.clear();
			//	if(!(j==n-1&&p[i]=='\n'))
				printf("%c", p[i]);
				
			}
		}
	}
}

你可能感兴趣的:(c++,算法,c语言)