加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数相加(A+B)(A>0,B>0) 模板

发布时间:2020-12-14 03:07:17 所属栏目:大数据 来源:网络整理
导读:#includecstdio #includestring.h #includemalloc.h #includestdlib.h #define M 10000 void add(char *a,char *b) { ? int i,j,alen,blen,lmax; ? alen=strlen(a); ? blen=strlen(b); ? lmax=alenblen?alen:blen; ? int *aa,*bb;? ?? aa=(int*)malloc(sizeo

#include<cstdio>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#define M 10000
void add(char *a,char *b)
{
? int i,j,alen,blen,lmax;
? alen=strlen(a);
? blen=strlen(b);
? lmax=alen>blen?alen:blen;
? int *aa,*bb;?
?? aa=(int*)malloc(sizeof(int)*alen);
?? bb=(int*)malloc(sizeof(int)*blen);
?? for(i=0;i<alen;i++)
???? aa[i]=0;
???? for(i=0;i<blen;i++)
?????? bb[i]=0;
?
??? for(i=alen-1,j=0;i>=0;i--,j++)
??? aa[j]=a[i]-'0';
?for(i=blen-1,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<lmax;i++)
?????? c[i]=aa[i]+bb[i];
??????
?????? for(i=0;i<lmax;i++)
???????? {
???????? ?if(c[lmax-1]>9)
???????? ?? {
???????? ?? ?lmax+=1;
???????? ?? }
???????? ?? if(c[i]>9)
???????? ??? {
???????? ??? ?c[i]-=10;
???????? ??? ?c[i+1]+=1;
???????? ??? }
???????? }
?????
????? for(i=lmax-1;i>=0;i--)
???????? 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);
??? add(a,b);
??? free(a);
??? free(b);
?}
?return 0;
}

上面有错误;下面可以使用:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define M 1000
char a[M];
char b[M];
char sum1[M];
char sum2[M];
int sum[M+100];
int main()
{
int T,ca;
scanf("%d",&T);
for(ca=1;ca<=T;ca++)
{
memset(a,sizeof(a));
memset(b,sizeof(b));
memset(sum1,sizeof(sum1));
memset(sum2,sizeof(sum2));
memset(sum,sizeof(sum));

int i,l,d,t;
scanf("%s%s",b);
for(i=strlen(a)-1,j++)
     sum1[j]=a[i]-'0';
     
    for(i=strlen(b)-1,j++)
      sum2[j]=b[i]-'0';
      
     l=strlen(a)>=strlen(b)?strlen(a):strlen(b); 
   
           for(i=0;i<l;i++)
             sum[i]=sum1[i]+sum2[i];
             for(i=0;i<l;i++)
             {
              if(sum[l-1]>9)
                l++;
                if(sum[i]>9)
                {
                sum[i]-=10;
                sum[i+1]+=1;
                }
             }
             
  printf("Case %d:n",ca);
  printf("%s + %s  = ",b);
  for(i=l-1;i>=0;i--) 
        {
         printf("%d",sum[i]);
}
printf("n");
   if(ca<T)
     printf("n");
}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读