大数的乘法
发布时间:2020-12-14 02:54:14 所属栏目:大数据 来源:网络整理
导读:#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]=st
#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;
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
