大数相减(A -B)(A>B)

来源:互联网 发布:如何修改网络游戏数据 编辑:程序博客网 时间:2024/06/06 05:27

 #include<cstdio>#include<string.h>#include<malloc.h>#include<stdlib.h>#define M 100000int main(){ int  T; scanf("%d",&T); while(T--) {    char *a,*b;    a=(char*)malloc(sizeof(char)*M);    b=(char*)malloc(sizeof(char)*M);        scanf("%s%s",a,b);    int i,j,alen,blen;    alen=strlen(a);    blen=strlen(b);      int *aa,*bb;      aa=(int*)malloc(sizeof(int)*alen);    bb=(int*)malloc(sizeof(int)*alen);    for(i=0;i<alen;i++)     aa[i]=bb[i]=0;          for(i=alen-1,j=0;i>=0;i--,j++)     aa[j]=a[i]-'0';    for(i=blen-1,j=0;i>=0;i--,j++)      bb[j]=b[i]-'0';             int *c;    c=(int*)malloc(sizeof(int)*alen);    for(i=0;i<alen;i++)      c[i]=0;          for(i=0;i<alen;i++)//此种与下面注释1的相同       c[i]=aa[i]-bb[i];//注意此处不是c[i]=a[i]-b[i];无意义             for(i=0;i<alen;i++)      {    //c[i]+=aa[i]-bb[i];//注释1    //{if(c[alen-1]<1)//这种格式与下面的这种注释2{}相对应         //alen-=1;}     if(c[i]<0)         {          c[i]+=10;          c[i+1]-=1;         }             }       for(i=alen-1;i>=0&&c[i]==0;i--)       ;       if(i>=0)         for(;i>=0;i--)        printf("%d",c[i]);        else          printf("0");        printf("\n");      /*{    for(i=alen-1;i>=0;i--)//注释2       printf("%d",c[i]);      printf("\n");      } */        free(a);        free(b);        free(aa);        free(bb);        free(c); } return 0;}/*void dele(char *a,char *b)//假设alen>beln { if(a==NULL||b==NULL)   return ; int i,j,alen,blen; int lmax,lmin,p=0;    alen=strlen(a);    blen=strlen(b);       int *aa,*bb;      aa=(int*)malloc(sizeof(int)*alen);    bb=(int*)malloc(sizeof(int)*alen);    for(i=0;i<alen;i++)     aa[i]=bb[i]=0;      for(i=alen-1,j=0;i>=0;i--,j++)     aa[j]=a[i]-'0';    for(i=blen-1,j=0;i>=0;i--,j++)      bb[j]=b[i]-'0';             int *c;    c=(int*)malloc(sizeof(int)*alen);    for(i=0;i<alen;i++)      c[i]=0;          for(i=0;i<alen;i++)//此种与下面注释1的相同 //去0输出     c[i]=aa[i]-bb[i];            for(i=0;i<alen;i++)      {    //c[i]+=aa[i]-bb[i];//注释1     //{if(c[alen-1]<1)//这种格式最后的输出与下面的注释2{}相对应          //alen-=1; }    if(c[i]<0)         {          c[i]=c[i]+10;          c[i+1]=c[i+1]-1;         }             }         for(i=alen-1;i>=0&&c[i]==0;i--)       ;       if(i>=0)         for(;i>=0;i--)        printf("%d",c[i]);        else          printf("0");       printf("\n");      //{for(i=alen-1;i>=0;i--)//注释2       //printf("%d",c[i]);     // printf("\n");}                free(aa);     free(bb);     free(c);        }int main(){ int T; scanf("%d",&T); while(T--) {  char *a,*b;    a=(char*)malloc(sizeof(char)*M);    b=(char*)malloc(sizeof(char)*M);    scanf("%s%s",a,b);    dele(a,b);    free(a);    free(b); } return 0;}


0 0