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);
}

四、结果

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

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

相关文章

  • C与C++中结构体的区别

    C与C++中结构体的区别

    C中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的,而到C++中一类或者一个结构体可以包含函数(这个函数在C++我们通常中称为成员函数),C++中的结构体和类体现了数据结构和算法的结合
    2013-10-10
  • c++ builder TreeView控件节点遍历代码

    c++ builder TreeView控件节点遍历代码

    这篇文章介绍了c++ builder TreeView控件节点遍历代码,有需要的朋友可以参考一下
    2013-09-09
  • C++中的继承方式与菱形继承解析

    C++中的继承方式与菱形继承解析

    这篇文章主要介绍了C++中的继承方式与菱形继承解析,继承是类和类之间的关系,是代码复用的重要手段,允许在保持原有类结构的基础上进行扩展,创建的新类与原有的类类似,只是多了几个成员变量和成员函数,需要的朋友可以参考下
    2023-08-08
  • C++中vector迭代器失效与深浅拷贝问题详析

    C++中vector迭代器失效与深浅拷贝问题详析

    迭代器失效就是迭代器底层对应指针所指向的空间倍销毁了,导致使用了一块已经被释放了的空间,下面这篇文章主要给大家介绍了C++中vector迭代器失效与深浅拷贝问题的相关资料,需要的朋友可以参考下
    2023-01-01
  • C++详细分析讲解函数参数的扩展

    C++详细分析讲解函数参数的扩展

    在C++中,定义函数时可以给形参指定一个默认的值,这样调用函数时如果没有给这个形参赋值(没有对应的实参),那么就使用这个默认的值。也就是说,调用函数时可以省略有默认值的参数
    2022-04-04
  • C++结构体作为函数参数传参的实例代码

    C++结构体作为函数参数传参的实例代码

    这篇文章主要介绍了C++结构体作为函数参数传参的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • C语言中单目操作符++、–的实例讲解

    C语言中单目操作符++、–的实例讲解

    C语言的操作符共分为算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号表达式,下表引用、函数调用和结构成员这10大类,这篇文章主要给大家介绍了关于C语言中单目操作符++、–的相关资料,需要的朋友可以参考下
    2021-12-12
  • C语言实现基于控制台的电子时钟

    C语言实现基于控制台的电子时钟

    这篇文章主要为大家详细介绍了C语言实现基于控制台的电子时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C++实现获取邮件中的附件

    C++实现获取邮件中的附件

    这篇文章主要为大家详细介绍了如何通过C++实现获取邮件文件中的附件,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • C语言中的sizeof操作符用法及和strlen的区别

    C语言中的sizeof操作符用法及和strlen的区别

    这篇文章主要介绍了C语言中的sizeof操作符用法及和strlen的区别,本文讲解了sizeof的定义、sizeof的语法以及使用实例,最后给出sizeof与strlen的区别,需要的朋友可以参考下
    2015-07-07

最新评论