您的位置:首页 > 编程语言 > C语言/C++

大整数乘法-C语言实现

2013-09-14 11:35 260 查看
因为字符串高地址保存的是高

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void BigMul(char *a,char *b)
{
int a_len=strlen(a);
int b_len=strlen(b);
int i,j,n,temp,t;
int *c=(int *)malloc(sizeof(int)*a_len);
int *d=(int *)malloc(sizeof(int)*b_len);
int result[100]={0};
for(i=0;i<a_len;i++)
c[i]=a[i]-'0';
for (i=0;i<b_len;i++)
d[i]=b[i]-'0';
n=a_len+b_len-1;
for (i=0;i<n;i++)
result[i]=0;
temp=0;
for(i=0;i<b_len;i++)
{
//t=d[i];
t=i;
for (j=0;j<a_len;j++)
{
temp=c[j]*d[i]+result[t];
if (temp>=10)
{
result[t]=(temp)%10;
result[t+1]+=temp/10;
}
else
{
result[t]=temp;
}
t++;
}
//n=n+a_len-1;
}
printf("Result:\n");
if (result[0]!=0)
printf("%d",result[0]);
for(i=1;i<=a_len+b_len-1;i++)
printf("%d",result[i]);
printf("\n");

}

void main()
{
char a[100]={0};
char b[100]={0};
printf("Input two big numbers:\n");
scanf("%s %s",a,b);
BigMul(a,b);
system("pause");
}


位,所以在测试的时候大家要注意这个问题。我会尽快解决这个问题,附上代码如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: