本题比较基础,多个大数的加法,先使用字符数组保存输入,再转换为整形数组依次相加即可。
#include <iostream>
#include <cstring>
using namespace std;
const int MAX = 1005;
int sum[MAX], temp[MAX]; //sum为总和数组,temp为临时存储每次输入的大数的数组
char arr[MAX]; //将大数首先按字符存储
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
memset(sum, 0, sizeof(sum));
while (cin >> arr)
{
if (strcmp(arr, "0") == 0)
break;
int len = strlen(arr);
memset(temp, 0, sizeof(temp));
for (int j = 0, k = len - 1; k >= 0; j++, k--)
{
temp[j] = arr[k] - '0'; //将字符转换为整型
}
for (int j = 0; j < MAX; j++) //按位相加并进位
{
sum[j] += temp[j];
if (sum[j] >= 10)
{
sum[j] -= 10;
sum[j + 1]++;
}
}
}
int index;
for (index = MAX - 1; index > 0; index--) //将结果末尾的0略去
{
if (sum[index] != 0)
break;
}
for (int j = index; j >= 0; j--) //输出结果
cout << sum[j];
cout << endl;
if (i < n - 1)
cout << endl;
}
return 0;
}
继续加油。