题意:
大数加法。其中,每个整数最多有100位,最多有100个整数相加。
思路:
将整数的每一位存储在数组中,模拟加法过程即可。
代码如下:
#include <iostream>
using namespace std;
#define MAXLen 110
void char2int(char data[])
{
int len = 0; //字符串长度
//字符串逆序
len = strlen(data);
for(int i = 0; i < len/2; i++)
{
int t = data[i];
data[i] = data[len - 1 - i];
data[len - 1- i] = t;
}
for(int i = 0; i < len; i++) //字符型转换为int型
{
data[i] = data[i] - '0';
}
}
int main()
{
char data1[MAXLen] = {0};
char data2[MAXLen] = {0};
int len1 = 0;
int len2 = 0;
int maxl = 0;
while(true)
{
gets(data2);
len2 = strlen(data2);
if(len1 > len2)
{
maxl = len1;
}
else
{
maxl = len2;
}
if(data2[0] == '0' && len2 == 1)
{
break;
}
char2int(data2);
for(int i = 0; i < maxl; i++)
{
data1[i] = data1[i] + data2[i];
if(data1[i] > 9)
{
data1[i] = data1[i]%10;
data1[i + 1]++;
}
}
if(data1[maxl] == 0)
{
len1 = maxl;
}
else
{
len1 = maxl + 1;
}
}
for(int i = maxl - 1;i >=0;i--)
{
printf("%d",data1[i]);
}
printf("\n");
return 0;
}