转自:http://bbs.csdn.net/topics/200054915
# include<stdio.h>
# include<string.h>
# include<malloc.h>
void
multiply(
char
* a,
char
* b,
char
* c)
{
int
i,j,ca,cb,* s;
ca=
strlen
(a);
cb=
strlen
(b);
s=(
int
*)
malloc
(
sizeof
(
int
)*(ca+cb));
for
(i=0;i<ca+cb;i++)
s[i]=0;
for
(i=0;i<ca;i++)
for
(j=0;j<cb;j++)
s[i+j+1]+=(a[i]-
'0'
)*(b[j]-
'0'
);
for
(i=ca+cb-1;i>=0;i--)
if
(s[i]>=10)
{
s[i-1]+=s[i]/10;
s[i]%=10;
}
i=0;
while
(s[i]==0)
i++;
for
(j=0;i<ca+cb;i++,j++)
c[j]=s[i]+
'0'
;
c[j]=
'\0'
;
free
(s);
}
这个算法还是有问题呀~