此题出错的地方是for循环,进位处的
#include <iostream>
#include <cstring>
using namespace std;
int main ()
{
string st[100];
int i = 0,max = 0;
while(1)
{
getline(cin,st[i++]);
max = max > st[i-1].size()?max:st[i-1].size();
if(st[i-1][0] == '0'&&st[i-1].size()==1)break;
}
int sum[max];
memset(sum,0,sizeof(int)*max);
for(int k = 1; k <= max; k++)
{
for(int j = 0; j < i-1; j++ )
{
int len = st[j].size() - k;
if(len>= 0)
{
sum[max-k] += (st[j][len]-'0');//cout<<st[j][len]<<" ->"<<sum[max-k]<<endl;
}
}
}
for(int k = max; k >= 2; k-- )
{
sum[k-2] += sum[k-1]/10;
sum[k-1]%=10;
}
int f = 0;
for(int y = 0 ; y < max; y++)
{
if(sum[y]==0)
{
if(f)
cout<<0;
}
else
{
f = 1;
cout<<sum[y];
}
}
if(!f)cout<<0;
cout<<endl;
return 0;
}
上下界弄的不准确。致使像9999999999+1之类的加法不能准确进位,谨记!!!