丑陋代码下的恶心结果

P1307 [NOIP2011 普及组] 数字反转

小哥不小心MXH @ 2017-10-16 06:31:55

本地运行 发现负数都会打印反转后的加一个负号加一个3 改不动了 求助

#include<cstdio>
int main()
{
    char b;
    int i=0,a[11],h;
    while((b=getchar())!='\n')
    {
        a[i]=(b-'0');
        i++;
        }
        h=i-1;
        for(i--;i>=0;i--)
        {
            if(a[i]==0)
            {h--;}
            else
            {break;}
            }
    if(a[0]==0)
    {
        printf("0");
        }
    else
    {
        int j=0;
        if(a[0]=='-')
        {
            for(;h>=1;h--)
            {
                a[j]=a[h];
                j++;
                }
            for(j=0;j<i-1;j++)
            printf("%d",a[j]);
            }
        else
        {
            for(;h>=0;h--)
            printf("%d",a[h]);
            }
        }
}

|