本题使用到了高精度计算,因为正常数组无法读取每个数组,因此我使用了字符数组,测定字符的长度后让他们从个位数开始相加,逢10进1,得出了结果,但过程相当繁琐,如果将字符数组转化为数组的话,会省事很多
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char a[101], b[101], c[102];
cin >> a;
cin >> b;
int x, y, z, k, n, m, i;
for (z = 0; z <= 101; z++) c[z] = 48;
x = strlen(a);
y = strlen(b);
if (x > y)
{
for (z = 0; z <= y - 1; z++)
{
c[z] = c[z] + a[x - z - 1] + b[y - z - 1] - 96;
if (c[z] > 57)
{
c[z + 1] += 1; c[z] -= 10;
}
}
for (z = y; z <= x - 1; z++)
{
c[z] = c[z] + a[x - z - 1]-48;
if (c[z] > 57)
{
c[z + 1] += 1; c[z] -= 10;
}
}
if (c[x] == 48) for (i = x - 1; i >= 0; i--) cout << c[i];
else for (i = x; i >= 0; i--) cout << c[i];
}
if (x < y)
{
for (z = 0; z <= x - 1; z++)
{
c[z] = c[z] + a[x - z - 1] + b[y - z - 1] - 96;
if (c[z] > 57)
{
c[z + 1] = c[z+1]+1; c[z] -= 10;
}
}
for (z = x; z <= y - 1; z++)
{
c[z] = c[z] + b[y - z - 1]-48;
if (c[z] > 57)
{
c[z + 1] = c[z + 1] + 1; c[z] -= 10;
}
}
if (c[y] == 48) for (i = y - 1; i >= 0; i--) cout << c[i];
else for (i = y; i >= 0; i--) cout << c[i];
}
if (x == y)
{
for (z = 0; z <= x - 1; z++)
{
c[z] = c[z] + a[x - z - 1] + b[y - z - 1] - 96;
if (c[z] > 57)
{
c[z + 1] = c[z + 1] + 1; c[z] -= 10;
}
}
if (c[y] == 48) { for (i = y - 1; i >= 0; i--) cout << c[i]; }
else { for (i = y; i >= 0; i--) cout << c[i]; }
}
cout << '\n';
return 0;
}