#define Max 1000
char sum[Max+1]; /*和*/
char a[Max],b[Max]; /*两个加数*/
int len1,len2;
void Input(char a[],char b[])
{
int i,len;
void Init(char a[]); /*对Init()函数进行声明*/
printf("Please enter two integer:\n");
scanf("%s %s",a,b);
len1=strlen(a);
len2=strlen(b);
Init(sum);
len=strlen(a);
for(i=len-1; i>=0; i--)
sum[Max+i-len] = a[i];
}
void Init(char a[])
{
int i;
for(i=0; i<Max; i++)
a[i] = '0';
return ;
}
void Long_Add(char sum[],char new[])
{
int i,j;
int len;
int tempsum;
int carry = 0; /*进位*/
len = strlen(new);
/*从个位开始,按位相加,逢十进一*/
for(i=Max-1,j=len-1; i>=0,j>=0; i--,j--)
{
tempsum = sum[i]-'0'+new [j]-'0'+carry;
sum[i] = tempsum%10+'0';
carry = tempsum/10;
}
while(carry > 0) /*处理最后一个进位*/
{
tempsum = sum[i]-'0'+carry ;
sum[i] = tempsum%10+'0';
carry = tempsum/10;
i--;
}
return;
}
void Output(char sum[])
{int i,n;
/*寻找和的最高非零位*/
for(i=0;i<Max;i++)
if(sum[i] != '0')
break;
/*输出计算出来的和*/
n=i;
for(n;n<Max;n++)
putchar(sum[n]);
return ;
}
int main()
{
Input(a,b);
Long_Add(sum,b);
Output(sum);
getch();
return 0;