#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void mutiply(char*a,char*b,char*res)
{
int len1,len2,len;
char temp;
int*result;
int i=0,j;
int startFlag=0;
len1=strlen(a);
len2=strlen(b);
len=len1+len2+1;
result=(int *)malloc(len*4);
for(i=0;i<len;i++)
result[i]=0;
for(i=0;i<len1/2;i++)
{
temp=a[i];
a[i]=a[len1-1-i];
a[len1-1-i]=temp;
}
for(i=0;i<len2/2;i++)
{
temp=b[i];
b[i]=b[len2-1-i];
b[len2-1-i]=temp;
}
for(i=0;i<len1;i++)//竖式相乘
for(j=0;j<len2;j++)
{
result[i+j]+=(a[i]-'0')*(b[j]-'0');
}
//处理进位
for(i=0;i<len;i++)
{
if(result[i]>9)
{
result[i+1]+=result[i]/10;
result[i]=result[i]%10;
}
}
j=0;
for(i=len-1;i>=0;i--)
{ if(result[i])
startFlag=1;
if(startFlag)
{
printf("%d",result[i]);
res[j++]=result[i]+'0';
}
}
res[j]='\0';
printf("\n");
}
int main()
{
char a[]="1234343243";
char b[]="112354364363463434";
char c[100];
mutiply(a,b,c);
printf("result=%s\n",c);
}
转载于:https://www.cnblogs.com/ITfeng/archive/2012/04/26/2472045.html