#include <stdio.h>
#include <string.h>
int main()
{
char ch1[100],ch2[100];
int a[100],b[100],c[100],d[100]={0};
int i,j,k;
int index,peace,temp;
int flag;
printf("input first char string:\n");
scanf("%s",ch1);
printf("input scond char string:\n");
scanf("%s",ch2);
for(i=0;i<strlen(ch1);i++)
a[strlen(ch1)-i-1]=ch1[i]-'0';
for(i=0;i<strlen(ch2);i++)
b[strlen(ch2)-i-1]=ch2[i]-'0';
for(i=0;i<strlen(ch2);i++)
{
index=i;peace=0;temp=0;
for(j=0;j<strlen(ch1);j++) //一位乘多位运算
{
c[index]=(b[i]*a[j]+peace)%10;
peace=(b[i]*a[j]+peace)/10;
index++;
}
if(peace) //进位
{
c[index]=peace;
index++;
}
for(k=i;k<index;k++) //相加
{
flag=d[k];
d[k]=(d[k]+c[k]+temp)%10;
temp=(flag+c[k]+temp)/10;
}
if(temp) //进位
{
d[k]=temp;
index++;
}
}
for(i=index-1;i>0;i--) //判断最高位是不是‘0’
{
if(d[i]==0)
index--;
else
break;
}
printf("乘积为:\n");
for(i=index-1;i>=0;i--)
printf("%d",d[i]);
putchar('\n');
return 0;
}
大数的乘法(正数)
最新推荐文章于 2022-12-19 19:19:20 发布