PTA乙级题 1074. 宇宙无敌加法器(20)

【题目链接】


注意第71行和72行,如果不要这两行的话,第五个测试点错误。所以题目的意思应该是如果前面没有输出的话,就输出0。

#include<stdio.h>
#include<string.h>
int main()
{
    int i,len1,len2,jinwei=0,flag=0;
    char a[21],b[21],c[2][21];
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    gets(a);
    gets(c[0]);
    gets(c[1]);
    len1=strlen(c[0]);
    len2=strlen(c[1]);
    //将输入项相加 
    if (len1>len2)
    {
        for (i=0;i<len2;i++)
        b[19-i]=c[0][len1-i-1]+c[1][len2-i-1]-'0';
        for (;i<len1;i++)
        b[19-i]=c[0][len1-i-1];
    }
    else
    {
        for (i=0;i<len1;i++)
        b[19-i]=c[0][len1-i-1]+c[1][len2-i-1]-'0';
        for (;i<len2;i++)
        b[19-i]=c[1][len2-i-1];
    }
    //转化
    for (i=0;i<strlen(a);i++)
    {
        if (b[19-i]==0)
        break;
        b[19-i]+=jinwei;
        if (a[strlen(a)-1-i]=='0')
        a[strlen(a)-1-i]+=10;
        jinwei=(b[19-i]-'0')/(a[strlen(a)-1-i]-'0');
        b[19-i]=(b[19-i]-'0')%(a[strlen(a)-1-i]-'0')+'0';
    }
    //判断是否有进位。 
    if (jinwei>0)
    { 
        printf("%d",jinwei);
        for (i=0;i<20;i++)
        {
            if (b[i]!=0)
            {
                for (;i<20;i++)
                {
                    printf("%c",b[i]);
                    flag=1;
                }
            }
        }
        return 0;
    }
    for (i=0;i<20;i++)
    {
        if (b[i]!=0&&b[i]!='0')
        {
            for (;i<20;i++)
            {
                printf("%c",b[i]);
                flag=1;
            } 
            break;
        } 
    }
    //如果应该输出为空,则输出0. 
    if (flag==0)
    printf("0");
}