C语言大数乘法总结

大数相乘

当两个数值很大的时候,超过了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]);
}

进阶的阶乘

猜你喜欢

转载自blog.csdn.net/qq_38290604/article/details/88240858
今日推荐