#include <iostream>
using namespace std;
#include <string>
void caculate(string longNum, string shortNum)
{
string s2(longNum.size(), '0');
string s3(longNum.size(), '0');
// 扩展短的数组
for (int i = shortNum.size() - 1, j = 1; i >= 0; i--, j++)
{
s2[s2.size() - j] = shortNum[i];
}
int temp = 0;
for (int i = longNum.size() - 1; i >= 0; i--)
{
int a = longNum[i] - '0';
int b = s2[i] - '0';
int c = a + b + temp;
temp = 0;
if(c<10){
s3[i] = c + '0';
}
else{
s3[i] = c - 10 + '0';
temp = c/10;
}
}
if(temp != 0){
cout << temp;
}
cout << s3;
}
int main()
{
string num1;
string num2;
bool flag = 0;
getline(cin, num1);
getline(cin, num2);
if (num1.size() >= num2.size())
{
caculate(num1, num2);
}
else
{
caculate(num2, num1);
}
}
设置进位缓存和最后进位的检查即可
有个小技巧,将短的那个字符串前面对齐0,可以简化计算的代码

京公网安备 11010502036488号