1. 程式人生 > >1.6程式設計基礎之一維陣列 11.大整數減法

1.6程式設計基礎之一維陣列 11.大整數減法

描述

求兩個大的正整數相減的差。

輸入共2行,第1行是被減數a,第2行是減數b(a> b)。每個大整數不超過200位,不會有多餘的前導零。輸出一行,即所求的差。樣例輸入
9999999999999999999999999999999999999
9999999999999
樣例輸出

9999999999999999999999990000000000000

#include<stdio.h>
#include<string.h>
int main()
{
    int  i,j,str1,str2,k=0;
    int  a1[255],a2[255],a3[255];
    char c1[255],c2[255];
    for(i=0; i<255; i++)
    {
        a1[i]=0;
        a2[i]=0;
    }
    scanf("%s",c1);
    scanf("%s",c2);
    str1=strlen(c1);
    str2=strlen(c2);
    j=0;
    for(i=str1-1; i>=0; i--)
        a1[j++]=c1[i]-'0';
    j=0;
    for(i=str2-1; i>=0; i--)
        a2[j++]=c2[i]-'0';
    for(i=0; i<255; i++)
    {
        a1[i]-=a2[i];
        if(a1[i]<0)
        {
            a1[i]+=10;
            a1[i+1]--;
        }
    }
    j=0;
    for(i=254; i>=0; i--)
        a3[j++]=a1[i];
    for(i=0; i<255; i++)
    {
        if(a3[i]!=0)   k=1;
        if(k==1)   printf("%d",a3[i]);
    }
    if(k==0)  printf("0");
    printf("\n");
    return 0;
}