微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数的乘法

#include "stdio.h"
#include "string.h"

int a[100]={0},b[100]={0},move[100]={0},result[100]={0} ;

int fac();

int main()
{
	int i,j;
	char str1[100],str2[100];
	printf("please input a number :\n");
	gets(str1);
	for(j=0,i=strlen(str1)-1;i>=0;i--,j++)
		a[j]=str1[i]-'0';
	printf("please input other number :\n");
	gets(str2);
	for(j=0,i=strlen(str2)-1;i>=0;i--,j++)
		b[j]=str2[i]-'0';
	fac();
	for(i=99;result[i]==0;i--);
	for(;i>=0;i--)
		printf ("%d",result[i]);
	return 0;
}

int fac()
{
	int i,j,k;
	int tempi,tempj;
	int tempx;
	int flag;
	for(i=99;b[i]==0;i--);
	tempi=i;
	for(i=0;i<=tempi;i++)
	{
		for(j=99;a[j]==0;j--);
		tempj=j;
		flag=0;
		for (j=0;(j<=tempj || flag==1);j++)
		{
			flag=0;
			tempx=a[j]*b[i];
			if(result[j+i]+move[j+i]+tempx%10>9)
				move[j+i+1]=(result[j+i]+move[j+i]+tempx%10)/10;
			result[j+i]=(result[j+i]+move[j+i]+tempx%10)%10;
			if(tempx>9)
			for (k=j+i;tempx>0;k++) 
			{
				move[k+1]=move[k+1]+tempx/10;
				tempx=tempx/10;
			}
			move[j+i]=0;
			for(k=99;move[k]==0;k--); //判断进位数组剩下的进位数是否为零
			if(k>j)
			{
				flag=1;
			}			
		}
	}
	return 0;
}
		

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐