首页 > 试题广场 >

编一个函数,计算这样表示的两个整数A,B之积,积存放在数组C

[问答题]

为了进行高精度计算,我们可以用一个数组表示一个正整数,一个数组元素表示整数的一位,例如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;
}

发表于 2020-04-03 16:23:33 回复(1)