大整数乘法-C语言实现

因为字符串高地址保存的是高

#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");
}

位,所以在测试的时候大家要注意这个问题。我会尽快解决这个问题,附上代码如下:

    原文作者:大整数乘法问题
    原文地址: https://blog.csdn.net/yyme411/article/details/11676709
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞