对于大数据相加的问题,我们可以使用字符串来表示这两个大数,并模仿手工相加的过程来进行计算。

#include <iostream>
#include <algorithm>
using namespace std;

string add(string num1, string num2) {
    // 确保num1是较长的字符串
    if (num1.length() < num2.length()) {
        swap(num1, num2);
    }
    
    int len1 = num1.length();
    int len2 = num2.length();
    int carry = 0; // 进位
    string result = "";
    
    // 从低位到高位逐位相加
    for (int i = len1 - 1, j = len2 - 1; i >= 0; i--, j--) {
        int digit1 = num1[i] - '0';
        int digit2 = j >= 0 ? num2[j] - '0' : 0; // 如果num2已经处理完,那么用0代替
        int sum = digit1 + digit2 + carry;
        carry = sum / 10;
        result.push_back(sum % 10 + '0');
    }
    
    // 如果还有进位,需要加上
    if (carry > 0) {
        result.push_back(carry + '0');
    }
    
    // 翻转字符串,得到正确的结果
    reverse(result.begin(), result.end());
    
    return result;
}

int main() {
    string num1, num2;
    cout << "请输入两个大数:" << endl;
    cin >> num1 >> num2;
    
    string sum = add(num1, num2);
    cout << "两个大数的和为:" << sum << endl;
    
    return 0;
}

这段代码中,我们使用了string来表示大数,并且通过逐位相加的方式计算结果。首先,我们将两个大数的长度对齐,然后从低位到高位逐位相加,同时记录进位。最后,如果还有进位,需要加上。最后,我们将结果翻转得到正确的结果。

请注意,由于C++标准库对string的长度没有明确限制,因此这段代码可以处理非常大的大数相加

两数相加代码大数据c++

原文地址: https://www.cveoy.top/t/topic/ihdX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录