求解两个大数相乘的结果,字符串解决。代码如下:
#include<stdio.h>
#include<string.h>
#define LEN 300
void Mul(char a[], char b[], char c[])
{
int i, j;
for(i=0; i<LEN*2; i++)
c[i]=0;
for(i=0; i<LEN; i++) {
for(j=0; j<LEN; j++) {
c[i+j]+=a[j]*b[i];
if(c[i+j]>=10) {
c[i+j+1]+=c[i+j]/10;
c[i+j]=c[i+j]%10;
}
}
}
}
int Input(char n[])
{
char s[LEN];
int i, l;
for(i=0; i<LEN; i++)
n[i]=0;
if(scanf("%s", s)<1) return -1;
l=strlen(s);
for(i=0; i<l; i++)
n[i]=s[l-i-1]-'0';
return 0;
}
void Print(char n[])
{
int i;
for(i=LEN*2-1; i>0; i--)
if(n[i]!=0) break;
for(; i>=0; i--)
printf("%d", n[i]);
printf("\n");
}
void main()
{
char a[LEN], b[LEN], c[LEN*2];
while(1) {
if(Input(a)) return;
Input(b);
Mul(a, b, c);
Print(c);
}
}
。。。。。。