高精度加法,减法,乘法,除法(下)(C语言)

前言
上一篇博客我们分享了高精度加法,减法,这一期我将为大家讲解高精度乘法和高精度除法。那让我们开始吧!
对加法和减法感兴趣的话就点我

在这里插入图片描述

1,乘法

让我们想想我们平时做数学时遇见乘法是怎么做的。以下图为例。
在这里插入图片描述
高精度乘法也是这样的一个思路,首先我们先把a和b的值储存进两个数组之中。然后将两个数组翻转之后,让a乘以b的每一位(从个位开始),然后错位相加。最后即可得到结果。
下面我用代码的方式来讲解:

#include <stdio.h>
#include<string.h>
void my_reverse(char* arr, int len)//翻转函数
{
   
    for (int i = 0; i < len - 1; i++, len--)
    {
   
        char temp = arr[i];
        arr[i] = arr[len - 1];
        arr[len - 1] = temp;
    }
}
void print_mul(int len1, int len2, char* arr1, char* arr2,int* mul)
{
   
    for (int i = 0; i < len2; i++)
    {
   
        for (int j = 0; j < len1; j++)//让arr1的每一位都乘以arr2的第i位
        {
   //高精度加法
            mul[i + j] += (arr1[j]-'0') * (arr2[i]-'0');//将结果存放在mul中
            mul[i + j + 1] += mul[i + j] / 10;
            mul[i + j] %= 10;
        }
    }
    while (mul[len1 + len2] == 0&&len1+len2 > 0)//去除前缀多余的0
        len1--;
    for (int i = len1 + len2; i >= 0; i--)//打印结果
        printf("%d", mul[i]);
}
int main()
{
   
    char arra[10100] = {
    0 }, arrb[10100] = {
    0 }; int arrmul[10010] = {
    0 };//分别储存a,b的值和a*b的值
    scanf("%s %s", arra, arrb);
    int lena = strlen(arra);//计算a和b的长度
    int lenb = strlen(arrb);
    my_reverse(arra, lena);//将a和b进行翻转方便进行运算
    my_reverse(arrb, lenb);
    print_mul(lena, lenb, arra, arrb, arrmul);
    return 0;
}

我们学习之后可以去洛谷进行测试(洛谷 P1303 A*B Problem

2,除法

除法在这里,点我点我!

3,尾声

这样我们的高精度算法就结束了,博主还将继续更新其他算法和编程学习的讲解。如果觉得感兴趣要记得关注下博主哦~。如果觉得本篇内容讲得不错的话请给博主一个赞和收藏吧。那么我们下期再见!

相关推荐

  1. C语言精度减法

    2023-12-09 23:50:04       74 阅读
  2. 精度加法精度乘法

    2023-12-09 23:50:04       34 阅读
  3. C语言精度加法

    2023-12-09 23:50:04       57 阅读
  4. 精度减法C++)

    2023-12-09 23:50:04       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-09 23:50:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-09 23:50:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-09 23:50:04       82 阅读
  4. Python语言-面向对象

    2023-12-09 23:50:04       91 阅读

热门阅读

  1. chmod 在Linux原生应用开发过程中的简单应用

    2023-12-09 23:50:04       56 阅读
  2. uniapp 开发app项目步骤

    2023-12-09 23:50:04       49 阅读
  3. Python基础学习文档(1)

    2023-12-09 23:50:04       39 阅读
  4. 【C3】【二维数组】【入门】交换行

    2023-12-09 23:50:04       49 阅读
  5. 我的K线图、反转图、砖型图和技术指标

    2023-12-09 23:50:04       52 阅读
  6. 编程中常见的技术难题:挑战与解决之道

    2023-12-09 23:50:04       45 阅读
  7. XMake构建Qt项目报错“undefined reference”

    2023-12-09 23:50:04       60 阅读
  8. TensorFlow的介绍

    2023-12-09 23:50:04       51 阅读
  9. Python处理Excel文件并与数据库匹配做拼接

    2023-12-09 23:50:04       45 阅读
  10. 单片机中的printf思考

    2023-12-09 23:50:04       58 阅读
  11. 分享一个用C#写的Aspose.Words生成word的工具类

    2023-12-09 23:50:04       45 阅读