大数相加,主要是处理进位位就可以了,就按加法正常处理就行,程序比较简单
#include<iostream>
using namespace std;
int main()
{
char inStr1[100], inStr2[100], outStr[150];
int len1, len2, pos,s,t,i,j,k;
cin >> inStr1 >> inStr2;
len1 = strlen(inStr1);
len2 = strlen(inStr2);
memset(outStr, 0, sizeof(char)* 150);
pos = 0;
if (len1 <= 0 || len2 <= 0)
{
return 0;
}
else
{
i = len1 - 1;
j = len2 - 1;
k = 149;
while (i >= 0 || j >= 0)
{
if (i >= 0)
{
s = inStr1[i] - '0';
}
else
{
s = 0;
}
if (j >= 0)
{
t = inStr2[j] - '0';
}
else
{
t = 0;
}
outStr[k] = (s + t + pos) % 10+'0';
pos = (s + t + pos) / 10;//更新进位位
i--;
j--;
k--;
}
}
outStr[k] = pos + '0';
if (pos == 0)//输出字符串开始位置
{
pos = k + 1 ;
}
else
{
pos = k;
}
//输出
while (pos != 150)
{
cout << outStr[pos];
pos++;
}
cout << endl;
return 0;
}
981

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



