1146: Word Reversal
Result | TIME Limit | MEMORY Limit | Run Times | AC Times | JUDGE |
---|---|---|---|---|---|
![]() | 3s | 8192K | 2445 | 640 | Standard |
For each list of words, output a line with each word reversed without changing the order of the words.
This problem contains multiple test cases!
The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.
The output format consists of N output blocks. There is a blank line between output blocks.
Input
You will be given a number of test cases. The first line contains a positive integer indicating the number of cases to follow. Each case is given on a line containing a list of words separated by one space, and each word contains only uppercase and lowercase letters.
Output
For each test case, print the output on one line.
Sample Input
1 3 I am happy today To be or not to be I want to win the practice contest
Sample Output
I ma yppah yadot oT eb ro ton ot eb I tnaw ot niw eht ecitcarp tsetnoc
/*
关键的不是算法
而是怎么读入一行中间有空格的字符串
算法:
有一个空格,就把tmp中的内容反转
*/
#include <iostream>
#include <cstring>
using namespace std;
char str[500];
char tmp[50];
int n,m;
int flag = 0;
int main()
{
freopen("in.txt","r",stdin);
cin >> m;
while(m-- >0)
{
if(flag = 0)
cout<<endl;
else
flag = 1;
cin >> n;
cin.get () ;//这个函数是必须的,否则换行之类的没有处理
for(int i=0;i<n;i++)
{
memset(str,'\0',sizeof(str));
memset(tmp,'\0',sizeof(tmp));
//gets(str); //破函数,啥都读不进去
cin.getline (str, 500, '\n') ; //函数的使用
int j =0;
for(int i=0;i<strlen(str);i++)
{
if(str[i] != ' ')
{
tmp[j] = str[i];
j ++;
}
else
{
j -= 1;
while(j > -1) //反向赋值
{
str[i - j - 1] = tmp[j];
j -- ;
}
j = 0;
}
if(strlen(str) -1 == i)
{
j -= 1;
while(j > -1) //反向赋值
{
str[i - j] = tmp[j];
j -- ;
}
j = 0;
}
}
cout << str<<endl;
}
}
fclose(stdin);
return 0;
}
就是一道水题,然后标准输入函数的使用
JOJ上PE了。算法没有问题,果断放弃