• 用c++写一个高精度计算的乘法运算


    这段代码是一个用C++编写的程序,它实现了两个大整数的乘法运算。

    #include
    #include
    #include
    using namespace std;
    
    int main(){
        char a1[101]="222",b1[101]="2";
        int a[101],b[101],c[10001],lena,lenb,lenc,i,j,x;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(c,0,sizeof(c));
        lena=strlen(a1);
        lenb= strlen(b1);
    
        for(i=0;i<lena;i++){
            a[lena-i]=a1[i]-48;
        }
        for(i=0;i<lenb;i++){
            b[lenb-i]=b1[i]-48;
        }
    
        for(i=1;i<=lena;i++){
            x=0;//用于存放进位
            for(j=1;j<=lenb;j++){//对乘数的每一位进行处理
                c[i+j-1]=a[i]*b[j]+x+c[i+j-1];//当前乘积+上次乘积进位+原数
                x=c[i+j-1]/10;
                c[i+j-1]%=10;
            }
            c[i+lenb]=x;
        }
        lenc=lena+lenb;
        while(c[lenc]==0 && lenc>1){
            lenc--;
        }
        for(i=lenc;i>=1;i--){
            cout<<c[i];
        }
        cout<<endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    虽然它相对简短,但其中包含了一些较为复杂的编程概念和难点:

    1. 大整数的表示:代码涉及的主要难点是如何处理和表示大整数,因为大整数通常会超出内置整数类型的范围。在代码中,大整数被表示为字符数组 a1b1,而在执行乘法运算时,它们被分解为整数数组 ab,这需要理解如何将字符数字转换为整数表示。

    2. 逐位运算:乘法运算通常需要逐位执行,这意味着对每一位数字执行乘法,然后将结果相加。这需要理解如何在循环中逐位处理数组,同时注意进位的问题。

    3. 进位处理:在乘法运算中,每一位的乘法结果都可能产生进位,需要正确地处理进位。代码中使用了变量 x 来存储进位,然后更新每一位的结果并将进位传递到下一位。

    4. 数组长度管理:代码中使用 lenalenb 分别表示两个乘数的长度,以及 lenc 表示结果的长度。正确管理数组的长度很重要,以确保结果不会溢出或包含不必要的零。

    5. 结果的输出:代码在计算结束后,需要正确输出结果。这包括去除高位的零并逆序输出结果。

  • 相关阅读:
    从“火热”到“退烧”,付费自习室将何去何从?
    4T硬盘剩余很多提示“No space left on device“磁盘空间不足
    Qt实现编辑框失去焦点隐藏功能
    程序员的土味情话
    每天五分钟机器学习:对于分类问题,支持向量机和逻辑回归哪个好
    SpringBoot核心注解
    CNN应用:图片分类
    狂神。SpringBoot学习(2)
    Mysql的优化<showprofile>
    Java之Collention集合
  • 原文地址:https://blog.csdn.net/qq_27575627/article/details/133949972