利用字符串处理大数
#include <iostream>
#include <string.h>
using namespace std;
void multiply(const char* a, const char* b)
{
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++)//a[i]*b[j]的乘积存放在s[i+j+1]中
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;
}
char *c=(char *)malloc((ca+cb)*sizeof(char));
i=0;
while(s[i]==0)//去除前导0
i++;
for(j=0; i<ca+cb; i++, j++)
c[j]=s[i]+'0';
for(i=0; i<j ;i++)
cout<<c[i];
cout<<endl;
free(s);
}
int main()
{
const char* p1="1234567891222";
const char* p2="41232121212121";
multiply(p1, p2);
return 0;
}