为了进行高精度计算,我们可以用一个数组表示一个正整数,一个数组元素表示整数的一位,例如396可以用数组A表示,即A[1]=6,A[2]=9,A[3]=3,编一个函数,计算这样表示的两个整数A,B之积,积存放在数组C中。注:假定积不会超过100位。
/*例如123x456*/ #include<stdio.h> int main(){ int A[100]={0},B[100]={0},C[100]={0}; int a,b,len1=0,len2=0,len3; int i,j,temp; scanf("%d %d",&a,&b); //a=123,b=456 while(a/10){ A[len1++]=a%10; a=a/10; } A[len1++]=a; //A[]={3,2,1} while(b/10){ B[len2++]=b%10; b=b/10; } B[len2++]=b; //B[]={6,5,4} for(i=0;i<len1;i++) for(j=0;j<len2;j++) C[i+j]=C[i+j]+A[i]*B[j]; //比如:C[1]=A[0]*B[1]+A[1]*B[0]=3*5+2*6 for(len3=1;C[len3]!=0;len3++){ C[len3]=C[len3]+C[len3-1]/10; //比如:C[1]=C[1]+C[0]的进位 C[len3-1]=C[len3-1]%10; } for(i=len3-1;i>=0;i--) printf("%d",C[i]); //逆序输出就变成正确的乘积了 return 0; }