又见阿郎电视剧,怎么防止长老年斑,18轮大卡车中文支援站
本文提供给刚入坑的新手
关于高精度的计算网上百度一下可以了解到许多
今天我分享的只是一些自己的心得,更详细的可以去看原博主的原创文章(https://blog.csdn.net/fanyun_01/article/details/79967170),在阅读完之后可以来我这文章食用。
注意事项:
1.因为超出了普通储存数据的范围,所以通过以字符的形式输入到数组当中。
2.储存是将字符串从后往前储存到数组当中的。
下面是源码,我是在老樊lu码的原创源码上加以修改的:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string str1,str2;
int i;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
cin>>str1>>str2; //输入两个字符串
a[0]=str1.length(); //取得第一个字符串的长度
a[i]=str1[a[0]-i]-'0'; //将第一个字符串中数据倒着输入到数组当中并用-'0'使其指向字符串中第一个字符
b[0]=str2.length(); //取得第二个字符串长度
for(i=1;i<=b[0];i++) //把第二个字符串中的每一位转换为整数,存放在数组b中
b[i]=str2[b[0]-i]-'0';
len=(a[0]>b[0]?a[0]:b[0]); //取两个字符串最大的长度
for(i=1;i<=len;i++) //做按位加法,同时处理进位
{
a[i]+=b[i];
cout<<"这是第 "<<i<<" 的值,此时a[i]= " <<a[i]; //在循环里面我决定使其更可视化,更能理解,于是加入了输出语句
a[i+1]+=a[i]/10;
cout<<"这是第 "<<i+1<<" 的值,此时a[i]= " <<a[i+1];
a[i]%=10;
cout<<"这是第 "<<i<<" 的值,此时a[i]= " <<a[i]<<"\n";
}
len++; //下面是去掉最高位的0,然后输出。
while((a[len]==0)&&(len>1)) len--;
for(i=len;i>=1;i--)
cout<<a[i];
return 0;
以上就是源码了虽然更改不大,但是我觉得加入输出是对新手来说很有必有的。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论