求助为什么不对

P1307 [NOIP2011 普及组] 数字反转

一苇渡江 @ 2016-01-05 17:04:58

#include<iostream>
int a[30];
using namespace std;
int main()
{
    int i,j,n;
    cin>>n;
    if(n>0)
    {
        for(i=1;i<=20;i++)
        {
            if(n>0)
            {
                a[i]=n%10;
                n=n/10;
            }
            else if(n==0)
            a[i]==false;
        }
        for(i=1;i<=20;i++)
        {
            if(a[i]>0&&a[i]!=false)
            cout<<a[i];
            else if(a[i]==0&&i!=1&&a[i]!=false)
            cout<<a[i];
        }
    }    
    else if(n==0)
    cout<<n;
    else
    {
        j=-1*n;
        for(i=1;i<=20;i++)
        {
            if(j>0)
            {
                a[i]=j%10;
                j=j/10;
            }
            else if(j==0)
            a[i]==false;
        }
        cout<<"-";
        for(i=1;i<=20;i++)
        {
            if(a[i]>0&&a[i]!=false)
            cout<<a[i];
            else if(a[i]==0&&i!=1&&a[i]!=false)
            cout<<a[i];
        }
    }
    return 0;
}

by PolyLoger @ 2016-02-10 11:15:17

#include<stack>
#include<cstdio>
#include<cstring>
using namespace std;
int n;
char a[100];
stack<char>G;
int main(void)
{
    scanf("%s",a);
    if(strcmp(a,"0")==0){
        printf("0");
    }
    n=strlen(a);
    for(int i=0;i<n;i++)
        G.push(a[i]);
    if(a[0]=='-')
        printf("-");
    while(G.empty()==0&&G.top()=='0')
        G.pop();
    while(G.empty()==0){
        if(G.top()=='-'||G.top()=='+'){
            G.pop();
            continue;
        }
        printf("%c",G.top());
        G.pop();
    }
    return 0;
}

|