完成2个20位整数的加、减、乘、除运算其中除法输出商与余数。使用C++语言编写以上程序
#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;
}
``
原文地址: http://www.cveoy.top/t/topic/hLfd 著作权归作者所有。请勿转载和采集!