C++求助,我用数组做的,为什么打不出负号,而且会打出0?

P1307 [NOIP2011 普及组] 数字反转

AshidaMana @ 2015-10-11 17:51:59

include<iostream>

using namespace std;
int main()
{
    int i,j,x;
    char a[20]={'0'};
    for(i=1;i<=19;i++)
    {    cin>>a[i];
        x=a[i];
        if(x<=47||x>=58)
        a[i]='0';
    }
    if(a[1]!='-')
    {for(i=19;i>=1;i--)
        {if(a[i]!='0')
        j=i;
        break;
        }
    for(i=j;i>=1;i--)
    cout<<a[i];
    }
    else 
    {
        cout<<'-';
        for(i=19;i>=2;i--)
        {if(a[i]!='0')
        j=i;
        break;
        }
    for(i=j;i>=2;i--)
    cout<<a[i];
    }
    return 0;
}

by zhm411821 @ 2015-11-03 18:32:41

1.输入‘-’的时候因为if(x<=47||x>=58)a[i]='0'; ‘-’被赋为‘0’了;

  1. {if(a[i]!='0') j=i; break; }只进行第一次判断,直接退出了;

include<iostream>

using namespace std;
int main()
{
    int i,j,x;
    char a[20]={'0'};
    for(i=1;i<=19;i++)
    {    cin>>a[i];
        x=a[i];
        if((x<=47||x>=58) && a[i]!='-')
        a[i]='0';
    }
    if(a[1]!='-')
    {for(i=19;i>=1;i--)
        if(a[i]!='0'){
            j=i;
        break;
        }
    for(i=j;i>=1;i--)
    cout<<a[i];
    }
    else 
    {
        cout<<'-';
        for(i=19;i>=2;i--)
        if(a[i]!='0'){
        j=i;
        break;
        }
    for(i=j;i>=2;i--)
    cout<<a[i];
    }
    return 0;
}

|