大数相乘
当两个数值很大的时候,超过了int的取值范围,此时应考虑大数乘法。
主要思路是将两个大数转换为数组,数组间模拟乘法过程。
#include<stdio.h>
#define NUM 100
int main()
{
int num1,num2,i,j,length1=0,length2=0;
int a[NUM],b[NUM],c[NUM]={0};
scanf("%d%d",&num1,&num2);
//将两个正数转换为数组
do{
a[length1++]=num1%10;
num1/=10;
}while(num1!=0);
i=0;
do{
b[length2++]=num2%10;
num2/=10;
}while(num2!=0);
//模拟数组乘法的过程
for(i=0;i<length1;i++){
for(j=0;j<length2;j++){
c[i+j]+=a[i]*b[j];
}
}
for(i=0;i<length1+length2;i++){
c[i+1]+=c[i]/10;
c[i]%=10;
}
int k=length1+length2;
while(c[k-1]==0) k--;
for(i=k-1;i>=0;i--)
printf("%d",c[i]);
}