输入两个正整数,求它们的和。
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char a1[100], b1[100];
int a[100], b[100], c[100], lena, lenb, lenc, i, x;
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
gets(a1); // 输入加数与被加数字符串
gets(b1);
lena = strlen(a1);
lenb = strlen(b1);
for (int i=0; i<lena; i++) {
a[lena-i] = a1[i] - '0'; // 或者 -48,加数放入a数组
}
for (int i=0; i<lenb; i++) {
b[lenb-i] = b1[i] - 48; // 加数放入b数组
}
lenc = 1; // 和的位置下标
x = 0; // 进位初始化为0
while (lenc<=lena || lenc<=lenb) {
c[lenc] = a[lenc] + b[lenc] + x; // 两数相加
x = c[lenc] / 10; // 向高位的进位
c[lenc] %= 10; // 第lenc位
lenc++;
}
c[lenc] = x;
if (c[lenc] == 0) { // 处理最高进位
lenc--;
}
for (int i=lenc; i>=1; i--) {
cout << c[i];
}
cout << endl;
return 0;
}