#include "stdio.h"
#include "string.h"
#define MAX 1024
void getDigits(int *a,char *str)
{
int len = strlen(str);
int i=0;
char c;
for(i=0;i<len;i++)
{
c = str[i];
a[len-1-i]=c-'0';
}
}
void multi(int *a,int *b,int *c)
{
int i,j;
for(i=0;i<MAX;i++)
{
for(j=0;j<MAX;j++)
{
*(c+i+j)+= *(a+i)**(b+j);
}
}
for(i=0;i<MAX*2-1;i++)
{
*(c+i+1)+=*(c+i)/10;
*(c+i)=*(c+i)%10;
}
}
void printDigit(int *c)
{
int i;
for(i=MAX-1;i>=0;i--)
{
if(c[i]!=0)
break;
}
for(;i>=0;i--)
printf("%d",c[i]);
}
int main()
{
char *str1=(char *)malloc(sizeof(char)*MAX);
char *str2=(char *)malloc(sizeof(char)*MAX);
int a[MAX];
int b[MAX];
int c[2*MAX];
int i=0;
memset(a,0,MAX*sizeof(int));
memset(b,0,MAX*sizeof(int));
memset(c,0,2*MAX*sizeof(int));
scanf("%s",str1);
scanf("%s",str2);
getDigits(a,str1);
getDigits(b,str2);
multi(a,b,c);
printDigit(c);
free(str1);
free(str2);
return 0;
}
实现起来需要考虑低位和高位的情况
字符串位置0存放高位信息,然后转为数组 位置0应该是低位信息