无限大的两个整数相加
发布时间:2020-12-14 04:01:29 所属栏目:大数据 来源:网络整理
导读:#includestdio.h#includestring.hint main(){ int sum; int n; int i,j; int ii,zz; int b,s; int Alen,Blen; int AA[100]; int BB[100]; int CC[101];char A[256];char B[256]; char C[256]; int flag=0;printf("Input A B:");gets(A);gets(B); Alen=strlen
#include<stdio.h> #include<string.h> int main() { int sum; int n; int i,j; int ii,zz; int b,s; int Alen,Blen; int AA[100]; int BB[100]; int CC[101]; char A[256]; char B[256]; char C[256]; int flag=0; printf("Input A B:"); gets(A); gets(B); Alen=strlen(A);Blen=strlen(B); /*比较出谁的位数大*/ if(Alen>Blen) { b=Alen; s=Blen; } else { b=Blen; s=Alen; } printf("%d %dn",Alen,Blen); /*把较小的那个数前面加0,使其和大的那个数位数相同!!*/ if(Alen>Blen) { for(n=b;n>=b-s;n--) { B[n]=B[n-b+s]; } for(n=0;n<b-s;n++) { B[n]='0'; } for(i=0;i<b;i++) printf("%c",B[i]); printf("n"); } else { for(n=b;n>=b-s;n--) { A[n]=A[n-b+s]; } for(n=0;n<b-s;n++) { A[n]='0'; } for(i=0;i<b;i++) printf("%c",A[i]); printf("n"); } /*把字符串数组变成整型数组*/ for(i=0;i<b;i++) { AA[i]=A[i]-'0'; } for(j=0;j<b;j++) { BB[j]=B[j]-'0'; } /* 两数相加*/ for(ii=b-1;ii>=1;ii--) { sum=AA[ii]+BB[ii]+flag; if(sum>=10) { CC[ii]=sum%10; flag=1; } else { CC[ii]=sum; flag=0; } } /*检测最高位是否溢出*/ if(AA[0]+BB[0]+flag>=10) { for(i=1;i<b;i++) { CC[i]=CC[i+1];//这个地方的顺序要注意一下!!!! } CC[1]=(AA[0]+BB[0]+flag)%10; CC[0]=1; for(zz=0;zz<=b;zz++) { C[zz]=CC[zz]+'0'; } printf("AA+BB="); for(zz=0;zz<=b;zz++) { printf("%c",C[zz]); } printf("n"); } else { CC[0]=AA[0]+BB[0]+flag; for(zz=0;zz<b;zz++) { C[zz]=CC[zz]+'0'; } printf("AA+BB="); for(zz=0;zz<b;zz++) { printf("%c",C[zz]); } printf("n"); } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |