C语言实现高精度加法

 更新时间:2021年05月03日 11:39:08   作者:summer_awn  
这篇文章主要为大家详细介绍了C语言实现高精度加法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本篇为高精度加法的计算,接下来我还会去写高精度乘法的计算。

一、高精度运算的概念

高精度运算其实就是参与运算的数完全超出基本数据类型所能表示的范围的运算(例如int型范围就是 - 2147483648 ~+ 2147483647)
所以如果想求较大数的话就要创建新的数据类型

二、数据类型的选取

我选择的是int型数组,这样比较便于计算和理解

三、代码

其中a和b我是通过随机数来赋值

//author   summer_awn
//date    2017/6/20
 
#include<iostream>
#include<time.h>
 
#define lenth_a 200
#define lenth_b 200
 
using namespace std;
 
//计算a+b
void main() {
 
 srand((unsigned)time(NULL));
 
 int * a = new int[lenth_a];//数组a            ******
 
 for (int i = 0; i < lenth_a; ++i) {
 
  a[i] = rand() % 10;
 
 }
 
 cout << "a=";
 for (int i = lenth_a - 1; i >= 0; --i) {//输出a
  cout << a[i];
 }
 cout << endl;
 cout << endl;
 
 int * b = new int[lenth_b];//数组b            ******
 
 for (int i = 0; i < lenth_a; ++i) {
 
  b[i] = rand() % 10;
 
 }
 
 cout << "b=";
 for (int i = lenth_b - 1; i >= 0; --i) {//输出b
  cout << b[i];
 }
 cout << endl;
 cout << endl;
 
 
 
 int lenth_result;//结果的长度en
 
 if (lenth_a > lenth_b) lenth_result = lenth_a + 1; 
 else lenth_result = lenth_b + 1;//通过一个判断来确定结果的长度
 
 
 int * a2 = new int[lenth_result];//a2***********
 
 int * b2 = new int[lenth_result];//b2***********
 
 memcpy(a2, a, sizeof(int)*lenth_a);//
 
 memset(a2 + lenth_a, 0, sizeof(int)*(lenth_result - lenth_a));
 
 memcpy(b2, b, sizeof(int)*lenth_b);
 
 memset(b2 + lenth_b, 0, sizeof(int)*(lenth_result - lenth_b));
 
 delete(a);
 delete(b);
 
 int * result = new int[lenth_result];//result*********
 
 result[0] = a2[0] + b2[0];
 
 for (int i = 1; i < lenth_result - 1; ++i) {
 
  result[i] = a2[i] + b2[i] + result[i - 1] / 10;
 
  result[i - 1] = result[i - 1] % 10;
 }
 
 result[lenth_result - 1] = result[lenth_result - 2] / 10;
 
 result[lenth_result - 2] = result[lenth_result - 2] % 10;
 
 delete(a2);
 delete(b2);
 
 cout << "结果=";
 for (int i = lenth_result - 1; i >= 0; --i) {
  cout << result[i];
 }
 cout << endl;
 
 system("pause");
 
 delete(result);
}

四、结果

结果有截图,未验证(因为懒)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 解析如何利用switch语句进行字符统计

    解析如何利用switch语句进行字符统计

    本篇文章是对如何利用switch语句进行字符统计的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • C语言实现拼图游戏源码

    C语言实现拼图游戏源码

    这篇文章主要为大家详细介绍了C语言实现拼图游戏源码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • 解析VC中预编译头文件的深入分析

    解析VC中预编译头文件的深入分析

    本篇文章是对VC中预编译头文件进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言实现黎曼和求定积分

    C语言实现黎曼和求定积分

    这篇文章主要为大家详细介绍了用C语言程序实现黎曼和求定积分,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • C++实现矩阵原地转置算法

    C++实现矩阵原地转置算法

    这篇文章主要介绍了C++实现矩阵原地转置算法,非常经典的算法,需要的朋友可以参考下
    2014-08-08
  • C语言实现的一个万年历小程序

    C语言实现的一个万年历小程序

    这篇文章主要介绍了C语言实现的一个万年历小程序,具有一定的参考价值,做C语言日期计算的朋友可以参考下
    2014-07-07
  • 基于C语言实现简单的走迷宫游戏

    基于C语言实现简单的走迷宫游戏

    这篇文章主要介绍了基于C语言实现简单的走迷宫游戏,用到双向队列,方便在运行完毕后输出经过的点,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • 二分图匹配实例代码及整理

    二分图匹配实例代码及整理

    这篇文章主要介绍了二分图匹配实例代码及整理的相关资料,这里提供了三种方法包括匈牙利算法,KM算法,多重匹配,需要的朋友可以参考下
    2017-07-07
  • 解析C++中的虚拟函数及其静态类型和动态类型

    解析C++中的虚拟函数及其静态类型和动态类型

    虚拟函数(Visual Function)亦常被成为虚函数,是C++中的一个重要特性,本文我们就来解析C++中的虚拟函数及其静态类型和动态类型
    2016-06-06
  • C++ 中回调函数详解及简单实例

    C++ 中回调函数详解及简单实例

    这篇文章主要介绍了C++ 中回调函数详解及简单实例的相关资料,需要的朋友可以参考下
    2017-06-06

最新评论