/*
* 高精度加法(自定义函数)
*/
#include <iostream>
#include <string>
#include <algorithm>
#include <stdlib.h>
using namespace std;
const int MAXN = 10005;
int A[MAXN], B[MAXN], C[MAXN], ANS[MAXN];
int lenA, lenB, lenANS;
// 获取输入,并逆序保存到数组中,即 num[0] 存放个位数
void read(int num[], int &len) { // 加上"&"使得可以对传入的len值进行修改
string str;
cin >> str;
len = str.length();
for (int i=0; i<len; i++) {
num[i] = str[i] - '0';
}
reverse(num, num+len);
}
int main()
{
system("color 1a");
cout<<" ";
read(A, lenA); // 存入A
cout<<"+";
read(B, lenB); // 存入B
lenANS = lenA>lenB?lenA:lenB; // 获取A和B中较大的长度
// 进行运算
for (int i=0; i<lenANS; i++) {
ANS[i] = A[i] + B[i] + C[i];
C[i+1] = ANS[i] / 10; // 注意计算顺序
ANS[i] = ANS[i] % 10;
}
// 判断最高位有无进位
if (C[lenANS] > 0) {
ANS[lenANS] = 1;
lenANS++; // 最高位有进位,长度加一
}
// 输出结果
cout<<"---------\n";
for (int i=lenANS-1; i>=0; i--) {
cout << ANS[i];
}
return 0;
}
2156

被折叠的 条评论
为什么被折叠?



