C++--大整数加减法(验证版)
【摘要】 前言
一般在C++程序编写过程中,我们所能一算的数其实都是有限制的,对于多位数(比如20位数或更多),利用正常的方法就无法计算出正确结果,所以大数运算还是需要研究哈 O(∩_∩)O~
验证代码
#include <iostream>
#include <string>
using namespace std;
string plus(str...
前言
一般在C++程序编写过程中,我们所能一算的数其实都是有限制的,对于多位数(比如20位数或更多),利用正常的方法就无法计算出正确结果,所以大数运算还是需要研究哈
O(∩_∩)O~
验证代码
#include <iostream>
#include <string>
using namespace std;
string plus(string num1,string num2){
if(num1.size()<num2.size()){ string temp=num1;
num1=num2;
num2=temp;
}
int length1=num1.size(),length2=num2.size(),flag=0,a,b,sum;//flag是进位标记
while(length1>0){
a=num1[length1-1]-'0';
if(length2>0) b=num2[length2-1]-'0';
else b=0; sum=a+b+flag; if(sum>=10){ num1[length1-1]='0'+sum%10; flag=1;
}else{ num1[length1-1]='0'+sum; flag=0;
}
length1--;//向高位移动1位
length2--;//向高位移动1位
}
if(1==flag)
num1="1"+num1;
return num1;
}
string sub(string num1,string num2)
{
string num11;
int k=0;
if(num1.size()<num2.size()||num1<num2){ string temp=num1;
num1=num2;
num2=temp;
k=1;
}
int length1=num1.size(),length2=num2.size(),flag=0,a,b,s;
while(length1>0)
{ a=num1[length1-1]-'0';
if(length2>0) b=num2[length2-1]-'0';
else b=0;
s=a-b-flag;
if(s<0){ num1[length1-1]=10+s+'0'; flag=1;
}else{ num1[length1-1]='0'+s; flag=0; }
length1--;//向高位移动1位
length2--;//向高位移动1位
}
//return k=0? num1:'-'+num1;
if(k==0)
return num1;
else
return '-'+num1;
}
int main()
{
string num1;
string num2;
cout<<"加法"<<endl;
cout<<"请输入第一个数:"; cin>>num1;
cout<<"请输入第二个数:"; cin>>num2;
cout<<"和是:"<<plus(num1,num2)<<endl;
cout<<"减法"<<endl;
cout<<"请输入第一个数:"; cin>>num1;
cout<<"请输入第二个数:"; cin>>num2;
cout<<"差是:"<<sub(num1,num2)<<endl;
return 0;
}
程序运行界面
文章来源: haihong.blog.csdn.net,作者:海轰Pro,版权归原作者所有,如需转载,请联系作者。
原文链接:haihong.blog.csdn.net/article/details/103625305
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)