大整数加法
#include<ios>
#include <iostream>
#include<algorithm>
using namespace std;
int main() {
char a[200], b[200], r[201];
cin >> a >> b;
reverse(a, a + strlen(a));
reverse(b, b + strlen(b));
int len_a = strlen(a), len_b = strlen(b), max_len = max(len_a, len_b), carry = 0, index = 0;
for (int i = 0;i < max_len || carry;i++) {
int num1 = (i < len_a) ? a[i] - '0' : 0;
int num2 = (i < len_b) ? b[i] - '0' : 0;
int sum = num1 + num2 + carry;
carry = sum / 10;
//相加完毕之后,需要再次转换为字符
r[index++] = sum % 10 +'0';
}
reverse(r, r + index);
r[index] = '\0';
cout << r;
return 0;
}
大整数减法
#include<ios>
#include <iostream>
#include<algorithm>
using namespace std;
int main() {
//大整数减法
char a[200], b[200], r[200];
cin >> a >> b;
reverse(a, a + strlen(a));
reverse(b, b + strlen(b));
int len_a = strlen(a), len_b = strlen(b), max_len = max(len_a, len_b), carry = 0, index = 0;
for (int i = 0;i < max_len || carry; i++) {
int num1 = (i < len_a) ? a[i] - '0' : 0;
int num2 = (i < len_b) ? b[i] - '0' : 0;
int result = 0;
if ((num1-carry) < num2) {
result = num1 + 10 - num2 - carry;
carry = 1;
}
else {
result = num1 - num2 - carry;
carry = 0;
}
r[index++] = abs(result)+'0';
}
reverse(r, r + index);
r[index] = '\0';
cout << r;
return 0;
}
整体思路来源源代码链接如下,笔者十分推荐阅读下述链接,思路及其详细,十分感激!
https://blog.csdn.net/weixin_53046747/article/details/141534749?spm=1001.2101.3001.10752