原题:

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

分析:

个人感觉用栈的知识比较好。。。

今天又温习了一下以前的知识、感觉以前的知识忘了许多,但现在复习一下、记得会很快、而且会运用了。

源码:

#include<stdio.h> #include<algorithm> #include<iostream> #include<stack> #include<string.h> using namespace std; stack<char>z; int main() {     int k;     int n;     char a[999];     scanf("%d",&k);     while(k--)     {         scanf("%d",&n);         getchar();         while(n--)         {             gets(a);             int l=strlen(a);             int i=0;             while(1)             {                 while(a[i]!=' '&&i<l)                 {                     z.push(a[i]);                     i++;                 }                 while(!z.empty())                 {                     printf("%c",z.top());                     z.pop();                 }                 if(i!=l)                 {                     printf(" ");                     i++;                 }                 else break;             }             printf("\n");         }         if(k)             printf("\n");     }     return 0; }