HDUOJ-1602

/**HDUOJ-1062
 * Problem Description:
 * Ignatius likes to write words in reverse way. Given a single line of text which 
 * is written by Ignatius, you should reverse all the words and then output them.
 * 
 * Input
 * The input contains several test cases. The first line of the input is a single integer 
 * T which is the number of test cases. T test cases follow.
 * Each test case contains a single line with several words. There will be at most 1000 characters in a line.
 * 
 * Output
 * For each test case, you should output the text which is processed.
 * 
 * Sample Input
 * 3 
 * olleh !dlrow
 * m'I morf .udh
 * I ekil .mca
 * 
 * Sample Output
 * hello world!
 * I'm from hdu.
 * I like acm.
 * 
 * Hint
 * Remember to use getchar() to read '\n' after the interger T, then you may use gets() to read a line and process it.
 */

#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    scanf("%d",&n);
    getchar();
    for( int i = 0; i < n; ++i){
        char ch;
        stack<char> s;
        while( (ch = getchar())  != EOF ){
            if( ch == ' '|| ch == '\n'){
                while(!s.empty()){
                    cout<<s.top();
                    s.pop();
                }
                cout<<ch;
            }else {
                s.push(ch);
            }
        }
    }
    return 0;
}

// 忘記結束符了,該如何結束呢?
//之前的程序沒法結束會一直等待輸入,考慮到最後判題時的輸入一般都是從文件讀取,
//所以在讀到一個字符後先判斷是不是達到文件末尾,如果達到了就結束程序.
//藉助與棧stack這種數據結構來說實現輸入字符串的倒置輸出.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章