#include<iostream>
#include<cstring>
using namespace std;
int plus(int a[],int b[],int c[],int max)
{
int i,temp=0;
for(i=0;i<max;i++)
{
c[i]=a[i]+b[i]+temp; //关键步骤
if(c[i]>=10)
{
c[i]-=10;
temp=1;
}
else
temp=0;
}
c[max]=temp; //容易忘
if(c[max]>0)
max++;
return max;
}
int main()
{
char a[200];
int a1[200],c[100]={0};
int i,len,max=0;
while(gets(a)&&strcmp(a,"0")>0) //注意是只输入0才结束,如0123,不结束
{
len=strlen(a);
for(i=0;i<200;i++)
a1[i]=0;
for(i=0;i<len;i++)
a1[i]=a[len-1-i]-'0';
if(len>max)
max=len;
max=plus(a1,c,c,max);
}
for(i=max-1;i>=0;i--)
cout<<c[i];
cout<<endl;
}
这是一道关于大整数累加的问题,我用了一个子函数,一下就过了。