例如:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void mul(char *a, char *b)
{
int i, j, na, nb, *s, fa = 1, fb = 1;
if (a[0] == '-')
{
a++;
fa = -1;
}
if (b[0] == '-')
{
b++;
fb = -1;
}
na = strlen(a);
nb = strlen(b);
s = (int *)malloc(sizeof(int) * (na + nb));
for (i = 0; i < na + nb; i++)
s[i] = 0;
for (i = 0; i < na; i++)
for (j = 0; j < nb; j++)
s[i + j + 1] += (a[i] - '0') * (b[j] - '0');
for (i = na + nb - 1; i >= 0; i--)
if (s[i] >= 10)
{
s[i - 1] += s[i] / 10;
s[i] %= 10;
}
char *c = (char *)malloc((na + nb) * sizeof(char));
i = 0;
while (s[i] == 0)
i++;
j = 0;
if (fa * fb == -1)
{
c[j] = '-';
j++;
}
for (; i < na + nb; i++, j++)
c[j] = s[i] + '0';
c[j] = '\0';
printf("%s", c);
free(s);
free(c);
}
int main()
{
char stra[80], strb[80];
scanf("%s %s", stra, strb);
mul(stra, strb);
return 0;
}