#include "StdAfx.h"
#include "subStr.h"
#include<iostream>
using namespace std;
#define MAX_LENTH 201
void add(int len,int *bigNumA,int *bigNumB){
//以下为执行加法累加,逐位相加;tag记录进位
int i,tag=0;
for(i=0;i<len;i++){
bigNumA[i]+=bigNumB[i];
if(tag){
bigNumA[i]++;
tag=0;
}
if(bigNumA[i]>=10){
tag=1;
bigNumA[i]-=10;
}
}
if(tag) printf("1");
for(i=len-1;i>=0;i--){
printf("%d",bigNumA[i]);
}
printf("\n");
}
int main(){
char numA[MAX_LENTH],numB[MAX_LENTH];
int bigNumA[MAX_LENTH],bigNumB[MAX_LENTH];
int i,j,pos,len,tag;
while(scanf("%s %s",numA,numB)!=EOF){
//注意两点,memset第三个参数是字节数,不能用strlen(bigNumA)。例如:
//memset(bigNumA,0,strlen(bigNumA))是错误的。
//bigNumA[MAX_LENTH]={0}这种将数组元素统一置为0的方式只有在声明的时候才能使用。
//以下的“//”解开后是会出错的。
memset(bigNumA,0,sizeof(bigNumA));
memset(bigNumB,0,sizeof(bigNumB));
//bigNumA[MAX_LENTH]={0};
//bigNumB[MAX_LENTH]={0};
//以下是将接收到的大整数numA和numB存储到bigNumA和bigNumB中,个位对应bigNumx[0],以此类推。
pos=0;
for(i=strlen(numA)-1;i>=0;i--){
bigNumA[pos++]=numA[i]-'0';
}
pos=0;
for(i=strlen(numB)-1;i>=0;i--){
bigNumB[pos++]=numB[i]-'0';
}
if(strlen(numA)>strlen(numB))
{
len=strlen(numA);
}else{
len=strlen(numB);
}
add(len,bigNumA,bigNumB);
}
system("pause");
return 0;
}