题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1151
Time Limit: 2 Seconds Memory Limit: 65536 KB
Problem Description
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
Problem solving report:
Description: 把每个单词反转,不改变单词的顺序。
Problem solving: 简单的字符串反转,利用栈的性质就可以了。。。
#include <stack>
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
char ch;
int t1, t2;
scanf("%d", &t1);
while (t1--)
{
scanf("%d%*c", &t2);
while (t2--)
{
stack <char> S;
while (ch = getchar(), ch != '\n')
{
if (ch == ' ')
{
while (!S.empty())
{
printf("%c", S.top());
S.pop();
}
printf(" ");
}
else S.push(ch);
}
while (!S.empty())
{
printf("%c", S.top());
S.pop();
}
printf("\n");
}
if (t1)
printf("\n");
}
return 0;
}