本文提供给刚入坑的新手

关于高精度的计算网上百度一下可以了解到许多

今天我分享的只是一些自己的心得,更详细的可以去看原博主的原创文章(https://blog.csdn.net/fanyun_01/article/details/79967170),在阅读完之后可以来我这文章食用。

注意事项:

1.因为超出了普通储存数据的范围,所以通过以字符的形式输入到数组当中。

2.储存是将字符串从后往前储存到数组当中的。

下面是源码,我是在老樊Lu码的原创源码上加以修改的:

  1. #include<iostream>

  2. #include<cstring>

  3. using namespace std;

  4. int main()

  5. {

  6. string str1,str2;

  7. int a[250],b[250],len; //数组的大小决定了计算的高精度最大位数
  8. int i;

  9. memset(a,0,sizeof(a));

  10. memset(b,0,sizeof(b));

  11. cin>>str1>>str2; //输入两个字符串

  12. a[0]=str1.length(); //取得第一个字符串的长度

  13. for(i=1;i<=a[0];i++) //把第一个字符串转换为整数,存放在数组a中
  14. a[i]=str1[a[0]-i]-'0'; //将第一个字符串中数据倒着输入到数组当中并用-'0'使其指向字符串中第一个字符 

  15. b[0]=str2.length(); //取得第二个字符串长度 

  16. for(i=1;i<=b[0];i++) //把第二个字符串中的每一位转换为整数,存放在数组B中 

  17. b[i]=str2[b[0]-i]-'0'; 

  18. len=(a[0]>b[0]?a[0]:b[0]); //取两个字符串最大的长度 

  19. for(i=1;i<=len;i++) //做按位加法,同时处理进位 

  20. a[i]+=b[i]; 

  21. cout<<"这是第 "<<i<<" 的值,此时a[i]= " <<a[i]; //在循环里面我决定使其更可视化,更能理解,于是加入了输出语句 

  22. a[i+1]+=a[i]/10; 

  23. cout<<"这是第 "<<i+1<<" 的值,此时a[i]= " <<a[i+1]; 

  24. a[i]%=10; 

  25. cout<<"这是第 "<<i<<" 的值,此时a[i]= " <<a[i]<<"\n"; 

  26. len++; //下面是去掉最高位的0,然后输出。 

  27. while((a[len]==0)&&(len>1)) len--; 

  28. for(i=len;i>=1;i--) 

  29. cout<<a[i]; 

  30. return 0; 

  31. }

以上就是源码了虽然更改不大,但是我觉得加入输出是对新手来说很有必有的。

c++高精度计算(加法)的更多相关文章

  1. 【OpenJ_Bailian - 4152 】最佳加法表达式(动态规划)

    最佳加法表达式 Descriptions: 给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值.例如,在1234中摆放1个加号,最好的摆 ...

  2. 百练4152:最佳加法表达式(dp+高精度)

    描述 给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值.例如,在1234中摆放1个加号,最好的摆法就是12+34,和为36 输入有不超 ...

  3. SCAU1143 多少个Fibonacci数--大菲波数【杭电-HDOJ-1715】--高精度加法--Fibonacci数---大数比较

    /*******对读者说(哈哈如果有人看的话23333)哈哈大杰是华农的19级软件工程新手,才疏学浅但是秉着校科联的那句“主动才会有故事”还是大胆的做了一下建一个卑微博客的尝试,想法自己之后学到东西都 ...

  4. OpenJudge 4152 最佳加法表达式

    总时间限制: 1000ms 内存限制: 65536kB 描述 给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值.例如,在1234中摆放 ...

  5. 【动态规划】最佳加法表达式(百练oj4152)

    总时间限制: 1000ms 内存限制: 65536kB 描述 给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值.例如,在1234中摆放 ...

  6. 用CIL写程序:写个函数做加法

    前言: 上一篇文章小匹夫为CIL正名的篇幅比较多,反而忽略了写那篇文章初衷--即通过写CIL代码来熟悉它,了解它.那么既然有上一篇文章做基础(炮灰),想必各位对CIL的存在也就释然了,兴许也燃起了一点 ...

  7. [CodeWars][JS]实现大整数加法

    问题描述 实现‘字符串加法’,即将两个以字符串形式表示的数字相加,得到结果然后返回一个新的字符串. 例如:输入‘123’,‘321’,返回‘444’. 这样在进行两个任意大的整数相加的时候,既不会溢出 ...

  8. 52. 不用+、-、×、÷做加法[add two numbers without arithmetic]

    [本文链接] http://www.cnblogs.com/hellogiser/p/add-two-numbers-without-arithmetic.html [题目] 写一个函数,求两个整数的 ...

  9. jQuery的加法运算.

    jQuery的加法运算. 加法运算 ?想必大家听到这都会不屑了,加法运算这是多么简单的运算.然而有的时候在jQuery也让人挺头疼的. 常规的是: var num1 = 123; var num2=1 ...

随机推荐

  1. CentOS6.5(1)----设置静态IP并禁用IPV6

    使用vim命令编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件 vim /etc/sysconfig/network-scripts/ifcfg-eth0 ...

  2. Python power spectral 功率谱

    You can also use scipy.signal.welch to estimate the power spectral density using Welch’s method. Her ...

  3. Install MySQL on Mac

    1. 可参考此文章:http://www.cnblogs.com/macro-cheng/archive/2011/10/25/mysql-001.html 2. 目前MySQL(我用的mysql 5 ...

  4. OpenStack 学习笔记 (一)

    后续的文章都贴在:臭蛋上 这一系列笔记已经记录很长一段时间了,种种原因没有贴出来,现在陆陆续续的贴出来.可能由于自己理解的 错误和疏忽,导致存在错误,欢迎大家指正,交流. 所有的源码分析都是基于Ope ...

  5. MySQL两个表联合查询并按时间排序

    有一张资金记录表,一张金币记录表,想以时间为单位,降序合并排列他们之间的信息,查询SQL如下: select * from (select * from t_money_logs union sele ...

  6. jekyll开发静态网站

    一.Ruby环境安装配置 首先下载ruby安装ruby download ,安装完ruby后,再安装rubyGems:运行gem update --system即可. 然后下载DevKit-mingw ...

  7. 【转】c++ http下载文件

    #include <afx.h> #include <afxinet.h> #define RECVPACK_SIZE 2048 bool DownloadSaveFiles( ...

  8. Java基础之PDF文件的合并

    1.首先下载一个jar包:pdfbox-app-1.7.1.jar 2.代码如下: package com; import java.io.File; import java.io.IOExcepti ...

  9. 如何解决MSSQL中文数据乱码问题

    今天遇到了在数据库中直接写SQL语句,语句中包含中文,但是数据库的表里是包含“?” 的乱码. 我程序代码中,调试时得到的SQL不是乱码,在控制台中也不是乱码.但是在数据库中却出现了乱码. 当用MSSQ ...

  10. MySQL经典错误

    本文目录: Top 1:Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行)Top 2:(主从复制报错类型)Top 3:MySQL安装过程中的报错Top 4:数 ...