作者在 2013-05-27 19:17:43 发布以下内容
#include<stdio.h>
#include <string.h>
void bigintmul(char a[],char b[])
{
int tempa[100]={0},tempb[100]={0},temp[200]={0},carry=0,i,j,m,n,num,k;
m=strlen(a);
n=strlen(b);
num=n+m;
for(i=m-1;i>=0;i--)
tempa[m-1-i]=a[i]-'0';//a数组的个位保存在temp[0],...
for(i=n-1;i>=0;i--)
tempb[n-1-i]=b[i]-'0';
for(j=0;j<m;j++)
{
for(i=0;i<n;i++)
temp[i+j]+=tempb[i]*tempa[j];
}
for(k=0;k<num;k++)
{
temp[k]+=carry;
carry=temp[k]/10;
temp[k]%=10;
}
if(temp[num-1]) //高位
printf("%d",temp[num-1]);
for(i=num-2; i>0;i--)
printf("%d",temp[i]);
}
int main()
{
char a[100],b[100];
printf("a数 : ");
gets(a);
printf("b数 : ");
gets(b);
printf("积数: ");
bigintmul(a,b);
printf("\n");
return 0;
}