大整數乘法-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");
}

位,所以在測試的時候大家要注意這個問題。我會盡快解決這個問題,附上代碼如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章