#include <iostream>
#include <string>

using namespace std;

string add(string num1, string num2) {
    int carry = 0;
    string result = "";
    int i = num1.length() - 1, j = num2.length() - 1;

    while (i >= 0 || j >= 0 || carry != 0) {
        int digit1 = (i >= 0) ? num1[i] - '0' : 0;
        int digit2 = (j >= 0) ? num2[j] - '0' : 0;
        int sum = digit1 + digit2 + carry;
        result = to_string(sum % 10) + result;
        carry = sum / 10;
        i--;
        j--;
    }

    return result;
}

string subtract(string num1, string num2) {
    int borrow = 0;
    string result = "";
    int i = num1.length() - 1, j = num2.length() - 1;

    while (i >= 0 || j >= 0) {
        int digit1 = (i >= 0) ? num1[i] - '0' : 0;
        int digit2 = (j >= 0) ? num2[j] - '0' : 0;
        int diff = digit1 - digit2 - borrow;

        if (diff < 0) {
            diff += 10;
            borrow = 1;
        } else {
            borrow = 0;
        }

        result = to_string(diff) + result;
        i--;
        j--;
    }

    return result;
}

string multiply(string num1, string num2) {
    int n1 = num1.length();
    int n2 = num2.length();
    string result(n1 + n2, '0');

    for (int i = n1 - 1; i >= 0; i--) {
        for (int j = n2 - 1; j >= 0; j--) {
            int prod = (num1[i] - '0') * (num2[j] - '0');
            int sum = prod + (result[i + j + 1] - '0');
            result[i + j + 1] = sum % 10 + '0';
            result[i + j] += sum / 10;
        }
    }

    size_t startpos = result.find_first_not_of("0");
    if (startpos != string::npos) {
        return result.substr(startpos);
    }

    return "0";
}

pair<string, string> divide(string num1, string num2) {
    string quotient = "";
    string remainder = num1;
    int divisor = stoi(num2);

    int i = 0;
    while (i < num1.length()) {
        int dividend = stoi(remainder.substr(0, i + 1));
        int quotientDigit = dividend / divisor;
        int remainderDigit = dividend % divisor;
        quotient += to_string(quotientDigit);

        if (remainderDigit == 0 && i == num1.length() - 1) {
            remainder = "";
        } else {
            remainder = to_string(remainderDigit) + remainder.substr(i + 1);
        }

        i++;
    }

    return make_pair(quotient, remainder);
}

int main() {
    string num1 = "12345678901234567890";
    string num2 = "98765432109876543210";

    string sum = add(num1, num2);
    string difference = subtract(num1, num2);
    string product = multiply(num1, num2);
    pair<string, string> quotientAndRemainder = divide(num1, num2);

    cout << "Sum: " << sum << endl;
    cout << "Difference: " << difference << endl;
    cout << "Product: " << product << endl;
    cout << "Quotient: " << quotientAndRemainder.first << ", Remainder: " << quotientAndRemainder.second << endl;

    return 0;
}
``
完成2个20位整数的加、减、乘、除运算其中除法输出商与余数。使用C++语言编写以上程序

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

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