c++高精度加法

求助:c++高精度加法我是个新手,只用数组编了一个高精度加法的程序,但是基本上每次运行都会出现“内存不能为

求助:c++高精度加法
我是个新手,只用数组编了一个高精度加法的程序,但是基本上每次运行都会出现“内存不能为read”的提示,请高手帮忙修改!(只用数组,不要用string)

C/C++ code
#include<iostream>using namespace std;int main(){    char c;    int a[110],b[110],i1,i2,d[110],i3,e=0;    for(i1=0;;i1++){      c=getchar();      if(c=='\n')break;      a[i1]=int(c)-48;      }    for(i2=0;;i2++){      c=getchar();      if(c=='\n')break;      b[i2]=int(c)-48;      }    if(i1>i2){      for(i1=i2;i3>0;i3--)        b[i3+i1-i2-1]=b[i3-1];      for(i3=i1-i2;i3>0;i3--)        b[i3-1]=0;      }    if(i2>i1){      for(i2=i1;i3>0;i3--)        b[i3+i2-i1-1]=b[i3-1];      for(i3=i2-i1;i3>0;i3--)        b[i3-1]=0;      i1=i2;      }    for(i3=i1;i3>0;i3--){      if(a[i3-1]+b[i3-1]>9){        d[i3-1]=(a[i3-1]+b[i3-1])%10+e;        e=1;        }      else{        d[i3-1]=a[i3-1]+b[i3-1];        e=0;        }      }    if(e==1)cout<<1;    for(i3=0;i3<i1;i3++)      cout<<d[i3];    //system("pause");}


[解决办法]
看了一下,明白lz的算法.我认为有几处问题,在代码后说明.

C/C++ code
#include<iostream>using namespace std;int main(){    char c;    int a[110],b[110],i1,i2,d[110],i3,e=0;    for(i1=0;;i1++){      c=getchar();      if(c=='\n')break;      a[i1]=int(c)-48;      }    for(i2=0;;i2++){      c=getchar();      if(c=='\n')break;      b[i2]=int(c)-48;      }    if(i1>i2){      for(i1=i2;i3>0;i3--)        b[i3+i1-i2-1]=b[i3-1];      for(i3=i1-i2;i3>0;i3--)        b[i3-1]=0;      }    if(i2>i1){      for(i2=i1;i3>0;i3--)        b[i3+i2-i1-1]=b[i3-1];      for(i3=i2-i1;i3>0;i3--)        b[i3-1]=0;      i1=i2;      }    for(i3=i1;i3>0;i3--){      if(a[i3-1]+b[i3-1]>9){        d[i3-1]=(a[i3-1]+b[i3-1])%10+e;        e=1;        }      else{        d[i3-1]=a[i3-1]+b[i3-1];        e=0;        }      }    if(e==1)cout<<1;    for(i3=0;i3<i1;i3++)      cout<<d[i3];    //system("pause");}
[解决办法]
总算看明白了,楼主为什么不先把数组全部置零,在输入时直接从数组最后一位开始存数,这样计算时就不用移动整个数组,而输出时只要找到第一个不为零的数就可以了。