求一C语言编程:求两个大数的乘积。
发布网友
发布时间:2022-05-01 22:58
我来回答
共2个回答
热心网友
时间:2022-06-24 16:03
看到这个问题后编啦两天才出来
兄台真的累啊
我是个新手 有些累赘的地方或不足的地方多多包涵
/* 大数相乘 */
#include "stdio.h"
void main()
{
char a[100],b[100];
int i,j,k,l,m,t,n,h,f,a1[100],b1[100],c[100][100]={0},d[100];
printf("Input the first Number:"); //以字符形式输入第一个大数
for(i=0;;i++)
{
a[i]=getchar();
if(a[i]=='\n') break;
}
printf("Input the second Number:"); //以字符形式输入第二个大数
for(j=0;;j++)
{
b[j]=getchar();
if(b[j]=='\n') break;
}
for(k=0;k<i;k++) //字符转换成数组
{
a1[k]=a[k]-48;
}
for(k=0;k<j;k++)
{
b1[k]=b[k]-48;
}
for(k=i-1;k>=0;k--) //数组1的每位数分别乘数组2
{
h=0;
for(l=j-1,m=0;l>=0;m++) //******
{
f=100-(i-1-k)-m;
t=c[k][f]=h+a1[k]*b1[l--];
c[k][f]=t%10;
h=t/10;
}
if(t>=10) c[k][f]=h;
}
for(h=100;h>0;h--) d[h]=c[0][h];
for(k=1;k<i;k++)
{
for(m=100;m>0;m--)
{
t=d[m]+c[k][m]+h;
d[m]=t%10;
h=t/10;
}
}
printf("The answer is :\n ");
for(i=0;i<=100;i++)
{
if(d[i]!=0)
{
for(;i<=100;i++) printf("%d",d[i]);
break;
}
}
}
热心网友
时间:2022-06-24 16:03
看到这个问题后编啦两天才出来
兄台真的累啊
我是个新手
有些累赘的地方或不足的地方多多包涵
/*
大数相乘
*/
#include
"stdio.h"
void
main()
{
char
a[100],b[100];
int
i,j,k,l,m,t,n,h,f,a1[100],b1[100],c[100][100]={0},d[100];
printf("Input
the
first
Number:");
//以字符形式输入第一个大数
for(i=0;;i++)
{
a[i]=getchar();
if(a[i]=='\n')
break;
}
printf("Input
the
second
Number:");
//以字符形式输入第二个大数
for(j=0;;j++)
{
b[j]=getchar();
if(b[j]=='\n')
break;
}
for(k=0;k<i;k++)
//字符转换成数组
{
a1[k]=a[k]-48;
}
for(k=0;k<j;k++)
{
b1[k]=b[k]-48;
}
for(k=i-1;k>=0;k--)
//数组1的每位数分别乘数组2
{
h=0;
for(l=j-1,m=0;l>=0;m++)
//******
{
f=100-(i-1-k)-m;
t=c[k][f]=h+a1[k]*b1[l--];
c[k][f]=t%10;
h=t/10;
}
if(t>=10)
c[k][f]=h;
}
for(h=100;h>0;h--)
d[h]=c[0][h];
for(k=1;k<i;k++)
{
for(m=100;m>0;m--)
{
t=d[m]+c[k][m]+h;
d[m]=t%10;
h=t/10;
}
}
printf("The
answer
is
:\n
");
for(i=0;i<=100;i++)
{
if(d[i]!=0)
{
for(;i<=100;i++)
printf("%d",d[i]);
break;
}
}
}