首页 > 代码库 > HDU 1002

HDU 1002

大数相加,我的做法是开两个字符数组,和整型数组,将字符数组存到整型数组里面去,让两个整型数组相加,如果大于等于10,前一位进一(因为存的时候顺序已经反了)。。

然后从后面开始判断非0,如果遇到不是零的直接跳出,输出数组。直接上代码吧。

#include <stdio.h>
#include <string.h>
int main()
{
    int a[1005];
    int b[1005];
    char a1[1005];
    char a2[1005];
    int n,m,i,j,l1,l2,cc;
    scanf("%d",&n);
    m=n;
    int wbx=1;
    while(m--)
    {
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        scanf("%s%s",a1,a2);
        l1=strlen(a1);
        l2=strlen(a2);
        cc=0;
        for(i=l1-1;i>=0;i--)
            a[cc++]=a1[i]-'0';
        cc=0;
        for(i=l2-1;i>=0;i--)
            b[cc++]=a2[i]-'0';
        for(i=0;i<1005;i++)
        {
            a[i]+=b[i];
            if(a[i]>=10)
            {
                a[i]-=10;
                a[i+1]++;
            }
        }
        printf("Case %d:\n",wbx++);
        printf("%s + %s = ",a1,a2);
        for(i=1004;i>=0;i--)
            if(a[i])
                break;
            for(j=i;j>=0;j--)
                printf("%d",a[j]);
            printf("\n");
            if(wbx!=n+1)
                printf("\n");
    }
    return 0;
}


 

HDU 1002