不多说,直接上代码,本人已测试通过。
char* multi(char* number_a, char* number_b)
{
int lengtha,lengthb;
lengtha = strlen(number_a);
lengthb = strlen(number_b);
char var[lengthb][lengtha+lengthb+10] ;
int s=0;
for(s = 0; s<lengthb; s++)
memset(var[s],0,lengtha+lengthb+10);
int i =0;
for(i = lengthb-1; i >= 0; i--)
{
int j =0;
int m =0;
for(j = lengtha-1; j >=0; j--)
{
int c = number_b[i] - '0';
int d = number_a[j] - '0';
int n = (c * d+m)%10;
char hh[2];
memset(hh,0,2);
itoa(n,hh,10);
var[lengthb-i-1][j+1] = hh[0];
m = (c*d+m) /10 ;
}
char qq[2] ;
memset(qq,0,2);
itoa(m,qq,10);
var[lengthb-i-1][0] = qq[0];
}
for(i=0; i<lengthb; i++)
{
int p = 0;
for(p=0; p< i; p++)
{
strcat(var[i],"0");
}
}
char res [lengtha+lengthb+2] ;
memset(res ,0,lengtha+lengthb+2);
int yy =0;
for(i=0; i<lengtha+lengthb; i++)
{
int g = 0;
int vf = 0;
for(g=0; g<lengthb; g++)
{
int l = strlen(var[g]);
if(l > i)
{
vf+=var[g][l-i-1] - '0' ;
}
}
vf+=yy ;
yy = vf /10 ;
int dd = vf %10 ;
char bg[2];
memset(bg,0,2);
itoa(dd,bg,10);
res[lengtha+lengthb-i-1] = bg[0];
}
for(i=0; i<lengtha+lengthb; i++)
{
if(res[i] == '0')
;
else
{
char *result = (char*)malloc(lengtha+lengthb+1);
strcpy(result,res+i);
return result;
}
}
return NULL;
}