zoj1151 Word Reversal (栈——基础练习)

题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=151 


题意:字符串反转,用栈、STL、C语言都能做,用栈做比较简单明了,不易出错。STL也很好,只是不太熟。


1.栈的做法

#include
#include
#include
#include
using namespace std;
int main(){
    int T,n;
    char s[10100];
    stack sta;
    cin >>T;
    while(T--){
        scanf("%d%*c",&n);//吸收空格
        while(n--){
            gets(s);
            while(!sta.empty())//清空栈
                sta.pop();
            int len=strlen(s);
            for(int i=0;i



2.c++  STL方法

#include
#include
#include
#include
#include
#include
using namespace std;
char a[10100],c[10100];
int main(){
    int T,N;
    cin >> T;
    while(T--){
        string s,buf;
        cin >> N;
        getchar();//吸收回车
        while(N--){
            getline(cin,s);
            stringstream ss(s);
            int ok=1;
            while(ss >> buf){
                if(ok) ok=0;    else cout << " ";
                reverse(buf.begin(), buf.end());//字符串反转
                cout << buf;
            }
            cout << "\n";
        }
        if(T) cout << endl;
    }
    return 0;
}

3.C语言做法:

#include
#include
#include
using namespace std;
char a[10100],c[10100];
int main(){
    int T,N;
    scanf("%d",&T);
    while(T--){
        scanf("%d%*c",&N);
        while(N--){
            int ok=1;
            gets(a);
            int zero=0;
            for(int i=0;i=0;j--){
                        if(c[j]==' '&&ok){
                            ok=0;
                        }
                        else
                            printf("%c",c[j]);
                    }
                    printf(" ");
                    zero=0;
                }else if(i==strlen(a)-1){
                    for(int j=zero-1;j>=0;j--)
                            printf("%c",c[j]);
                    printf("\n");
                }
            }
        }
        if(T) printf("\n");
    }
    return 0;
}


你可能感兴趣的:(大水题,栈)