在计算过大的数字时,我们可以使用字符串进行存储,再模拟计算过程,结果也用字符串存储,最后输出这个字符串
加法:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int main()
{
string a, b;
cin >> a >> b;
int l1 = a.size();
int l2 = b.size();
if(l1 < l2)
{
string temp = a;
a = b;
b = temp;
}
l1--, l2--;
int G = 0;
while(l2 >= 0)
{
int S = a[l1] - '0' + b[l2] - '0'+ G;
G = S/10;
S = S % 10;
a[l1] = S + '0';
l1--, l2--;
}
while(l1 >= 0)
{
int S = a[l1] - '0' + G;
G = S/10;
S = S % 10;
a[l1] = S + '0';
l1--, l2--;
}
if(G != 0)
a = '1' + a;
cout << a << endl;
}
上面那个虽然能计算,但是有纰漏,再来一个修改的
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int main()
{
string a, b;
cin >> a >> b;
cout << a << " + " << b << " = ";
int l1 = a.size();
int l2 = b.size();
if(l1 < l2)
{
string temp = a;
int t = l1;
a = b;
l1 = l2;
b = temp;
l2 = t;
}
l1--, l2--;
int G = 0;
while(l2 >= 0)
{
int S = a[l1] - '0' + b[l2] - '0'+ G;
G = S/10;
S = S % 10;
a[l1] = S + '0';
l1--, l2--;
}
while(l1 >= 0)
{
int S = a[l1] - '0' + G;
G = S/10;
S = S % 10;
a[l1] = S + '0';
l1--, l2--;
}+
if(G != 0)
a = '1' + a;
cout << a << endl;
return 0;
}