大整数乘法c实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

void chengfa(char *a,char*b)

{

char c[10000];

int fuhao1,fuhao2;

if(a[0] == '-' || a[0] == '+') {

if(a[0] == '-')

fuhao1 = -1;

else fuhao1 = 1;

strcpy(c,a+1);

strcpy(a,c);

}

if(b[0] == '-' || b[0] == '+') {

if(b[0] == '-')

fuhao2 = -1;

else fuhao2 = 1;

strcpy(c,b+1);

strcpy(b,c);

}

int i , j;

for(i = 0; i< 10000;i++){

c[i] = '0';

}

int lena = strlen(a);

int lenb = strlen(b);

for(i = lena-1;i >=0;i--){

int k = 0;

for(j = lenb-1;j >=0;j--) {

char l = c[i+j+1];

c[i+j+1] = (c[i+j+1]-'0'+(b[j]-'0')*(a[i]-'0')+k)%10+'0';

k = (l-'0'+(b[j]-'0') * (a[i] -'0')+k)/10;

}

if(k!= 0) c[i] += k;

}

i = 0;

j = 0;

while(c[i] == '0') i++;

while(i <= lena+lenb-1) {

a[j] = c[i];

j ++;

i ++;

}

a[j] = '\0';

if(a[0] == '\0') a[0] = '0',a[1] = '\0';

if(fuhao1*fuhao2 == -1 && a[0] !='0') { strcpy(c,a);

a[0] = '-';

a[1] = '\0';

strcat(a,c);

}

}

int main()

{

char a[10000],b[10000];

while(scanf("%s %s",a,b) == 2) { chengfa(a,b);

printf("%s\n",a);

}

}

相关文档
最新文档