Cộng hai số siêu lớn!

#include <stdio.h>
#include <string.h>
#include <math.h>
struct bignum
{char num[100];
}
bignum[100];
void chuanA(char a[100], char b[100]) 
{ int k,i;
k=strlen(b)-strlen(a);
while(strlen(a)<strlen(b))
{for(i=strlen(a);i>=0;i--)
{a[i+1]=a[i];}}
for(i=0;i<=k-1;i++)
{a[i]='0';}
}
void chuanB(char a[100], char b[100]) 
{ int k,i;
k=strlen(a)-strlen(b);
while(strlen(b)<strlen(a))
{for(i=strlen(a);i>=0;i--)
{b[i+1]=b[i];}}
for(i=0;i<=k-1;i++)
{b[i]='0';}
}
void ketqua(char a[100], char b[100])
{int c[100];
int i,k,carry;
if(strlen(a)<strlen(b))
{chuanA(a,b);}
if(strlen(a)>strlen(b))
{chuanB(a,b);}
k= strlen(a)-1;
carry=0;
for(i=strlen(a)-1;i>=0;i--)
{a[i]=a[i]-'0';
b[i]=b[i]-'0';
c[i]=a[i]+b[i]+carry;
if(c[0]>=10)
{c[i]=c[0];
break;}
carry=c[i]/10;
c[i]=c[i]%10;
}
for(i=0;i<=k;i++)
{printf("%d",c[i]);}}
int main()
{ int n,i,c[100];
//printf("n=");
scanf("%d",&n);
for (i=1;i<=2*n;i=i+2)
{scanf("%s",&bignum[i].num);
scanf("%s",&bignum[i+1].num);
if(strlen(bignum[i].num)<strlen(bignum[i+1].num))
{chuanA(bignum[i].num,bignum[i+1].num);}
if(strlen(bignum[i].num)>strlen(bignum[i+1].num))
{chuanB(bignum[i].num,bignum[i+1].num);}}
//printf("KETQUA\n");
for (i=1;i<=2*n;i=i+2)
{ketqua(bignum[i].num , bignum[i+1].num);
printf("\n");}
getch();
return(0);}

A post was merged into an existing topic: Cộng hai số siêu lớn

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?