这是我以前写过的大整数相乘的函数
输入是两个字符串a和b,里面分别存着乘数和被乘数(如12345678901234和98456714568855)
两数相乘的结果存储在字符串c中
#include
#include
int c[2004];
int mul(char a[1001],char b[1001])
{
char temp[1001];
int lena=strlen(a);
int lenb=strlen(b);
if(lenb>lena)//a总是大的整数
{
int t=lena;
lena=lenb;
lenb=t;
strcpy(temp,a);
strcpy(a,b);
strcpy(b,temp);
}
memset(c,0,2002*sizeof(int));
int total=lena+lena;
for(int k=lenb-1;k>=0;k--)
{
int starn=total-lenb+k+1;
int temp=0;
for(int m=lena-1;m>=0;m--,starn--)
{
temp=(b[k]-'0')*(a[m]-'0')+temp;
//printf("%d\n",temp);
// printf("c[%d]=%d\n",starn,c[starn]);
int t=c[starn];
c[starn]=(c[starn]+temp)%10;
// printf("c[%d]=%d\n",starn,c[starn]);
temp=(t+temp)/10;
}
c[starn]+=temp;
}
效率不高,希望对你有用
用数组存储各个数字位,其运算过程也是由自己编写
用字符串保存 自己写他们之间的运算关系