1.为什么使用高精度算法啊?

在c语言中,int类型取值范围为(-2^31 ~ 2^31-1),而long long类型取值范围也才仅有(-2^63~ 2^63-1),在处理一些较大的数据时,显然仅靠这些类型,是完全无法处理的

2.高精度加法的核心思想(图解)

3.高精度算法的核心思想

其实就是用数组来处理高精度问题
将很大的数字用字符数组存储,再将其中一个个的数字变为整数存入整形数组中

4.准备工作

1.要输入东西

int main()
{char s1[3000], s2[3000];scanf("%s%s", s1, s2);int a[3000], b[3000], c[3000];//a来装s1,b来装s2,c来求和memset(a, 0, sizeof(a));//将数组清零memset(b, 0, sizeof(b));memset(c, 0, sizeof(c));return 0;
}

2.开始转化数字

    int l1 = strlen(s1);int l2 = strlen(s2);int i, j;for (i = 0, j = l1 - 1; i < l1; i++, j--){a[i] = s1[j] - '0';}for (i = 0, j = l2 - 1; i < l2; i++, j--){b[i] = s2[j] - '0';}//注意这里我们要逆着放入输入的数,原因是便于我们后续处理,个人认为没啥特别的,也不需要特别理解

5.核心代码

开始转化了哦!!!

    int len = 0;if (l1 > l2){len = l1;}else{len = l2;}for (i = 0; i < len; i++){c[i] = a[i] + b[i];}for (i = 0; i < len; i++){if (c[i] >= 10){c[i + 1] += c[i] / 10;c[i] %= 10;}}//就是我上面那张图解,实际上可以做的更好,但为了便于理解我将这块分成了两部分

6.最后工作

    i = 2999;while (c[i] == 0 && i > 0)//去零,就low点把实际上还有好的办法,但理解第一{i--;}for (j = i; j >= 0; j--)//逆着输出这不就对上了吗{printf("%d", c[j]);}

7.最终代码

#include <stdio.h>
#include <string.h>
int main()
{char s1[3000], s2[3000];scanf("%s%s", s1, s2);int a[3000], b[3000], c[3000];memset(a, 0, sizeof(a));memset(b, 0, sizeof(b));memset(c, 0, sizeof(c));int l1 = strlen(s1);int l2 = strlen(s2);int i, j;for (i = 0, j = l1 - 1; i < l1; i++, j--){a[i] = s1[j] - '0';}for (i = 0, j = l2 - 1; i < l2; i++, j--){b[i] = s2[j] - '0';}int len = 0;if (l1 > l2){len = l1;}else{len = l2;}for (i = 0; i < len; i++){c[i] = a[i] + b[i];}for (i = 0; i < len; i++){if (c[i] >= 10){c[i + 1] += c[i] / 10;c[i] %= 10;}}i = 2999;while (c[i] == 0 && i > 0){i--;}for (j = i; j >= 0; j--){printf("%d", c[j]);}return 0;
}

8.结果展示

2341245213543654576547567
2314231535464575675686788
4655476749008230252234355
D:\vs2019 c\算法分析\Debug\main.c.exe (进程 6968)已退出,代码为 0。
按任意键关闭此窗口. . .

总结

算法魅力无穷,本人水平有限,只能至此。愿与诸君共同进步,奔向美好未来

c语言高精度算法(加法)相关推荐

  1. c语言高精度算法阶乘_任意位数的高精度阶乘算法 C语言版

    文章作者:姜南(Slyar)文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. 今天就研究这个"任意位数的高精度阶乘算法"了,通过和大三的一个学 ...

  2. 语言高精度算法阶乘_JavaScript中的算法(附10道面试常见算法题解决方法和思路)...

    https://juejin.im/post/6844903811505455118 Introduction 面试过程通常从最初的电话面试开始,然后是现场面试,检查编程技能和文化契合度.几乎毫无例外 ...

  3. c语言高精度算法阶乘_学了这么久的C语言,原来可以这样解决算法问题...

    C语言中有有许多经典的算法,这些算法都是许多人的智慧结晶,也是编程中常用的算法,这里面包含了众多算法思想,掌握这些算法,对于学习更高级的.更难的算法都会有很大的帮助,会为自己的算法学习打下坚实的基础. ...

  4. 高精度阶乘和 高精度算法(c语言)

    以前刷oj的时候 遇见一个题目 也就是输入一个数字 判断阶乘和 用高精度计算出S=1!+2!+3!+-+N!(N≤50),其中"!"表示阶乘, 例如:5!=5*4*3*2*1.输入 ...

  5. 【基础】(C语言)高精度算法

    文章目录 前言:为什么我们需要高精度算法? 一.高精度算法基础 二.高精度乘法 1.计算流程 2.完整代码 三.总结 前言:为什么我们需要高精度算法? 多数时候我们需要进行非常庞大的数字运算,其中涉及 ...

  6. 高精度算法(加减乘除取模(均可以处理负数))

    高精度算法 前言 大数加法 不可以处理负数的模板 可以处理负数 大数减法 两个数都是整数,且相减结果大于0 两个数都是正整数,相减结果可以是负数 两个数均可以是负数 高精度乘法 两个数均可以是负数 大 ...

  7. 高精度算法——高精度减法

    介绍: 高精度减法也同加法一样,也是用于位数太大的运算,给你一个十几位的数你可能会做直接开个long long 的数据类型就解决了,但是给你一个100位的呢,1000位的呢,开long long 也不 ...

  8. C语言常用算法源代码

    原文地址:C语言常用算法源代码 作者:xuzengshuai 一.计数.求和.求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值.终值或结束条件,更要注意用来表示计数.和.阶乘的 ...

  9. A.pro读算法の2:高精度算法

    1.1 描述 高精度算法,属于处理大数字的数学计算方法.在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字.一般这类数字我们统称为高精度数,高精度算法是用计算机对于 ...

最新文章

  1. HTML5 Audio标签方法和函数API介绍
  2. mac搭建php审计环境,[php审计实战篇]Simple-Log v1.6 安装逻辑问题
  3. 如何更改github工程的语言属性
  4. BM惊爆:EOS一周年工作KPI
  5. WINDOW下,node.js的安装
  6. CF1479C Continuous City
  7. python中的set方法_Python中set与frozenset方法和区别详解
  8. mysql function_Koa2 amp; mySQL amp; PM2 搭建后端服务
  9. StorAge存储库
  10. nodejs/pomelo 使用 mongodb 连接 mongo时 出现
  11. python 数组学习
  12. 惠普台式电脑引导不了系统_惠普电脑进入bios设置引导模式操作步骤图文
  13. 计算机c盘装什么,电脑只有一个C盘!怎么为电脑重装系统?
  14. 杭电数字电路课程设计——出租车计费器
  15. 让我摘下星星送给你_去最美的地方,我摘下星星给你。
  16. Unity3D Delegate
  17. java 中常用英语_java中常用英语
  18. 遥感图像去雾文章解读
  19. 光纤收发器tx和rx,光纤收发器单模和多模的区别!
  20. 快慢指针 ——链表 | Leetcode 练习

热门文章

  1. 网站seo优化推广方式有哪些?如何提高网站排名?
  2. T400 Windows7下面迅盘的启用
  3. PDF解密PDFPasswordRemover
  4. 哪里能找到搞笑自媒体素材?学会技巧才能提高创作效率
  5. c语言trim函数去除全部空格,Excel Trim函数使用方法,含用三个去空格函数都删不了的空格实例...
  6. 项目管理软件之争,禅道和JIRA大对比
  7. 【改】[火光摇曳]神奇的伽玛函数(上)——markdown排版
  8. java属于高级语言_一文告诉你java是高级语言吗?
  9. 51单片机(八).单片机的I2C与串口通讯
  10. 浏览器中实现3D全景浏览