帮我康康,这个高精度加法哪里有问题,蟹蟹

帮我看看,急!

#include<bits/stdc++.h>
using namespace std;
char sa[1010],sb[1010];
int la,lb,lc,a[1010],b[1010],c[1010];
int main()
{
    cin >> sa >> sb;
    la = strlen(sa);
    lb = strlen(sb);
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    for(int i=0;i<=la;i++)
        a[i]=sa[i]-'0';
    for(int i=0;i<=lb;i++)
        a[i]=sb[i]-'0';
    lc = la > lb ? la : lb;
    memset(c,0,sizeof(c));
    for(int i=0;i<lc;i++)
    {
        c[i]=a[i]+b[i]+c[i];
        if(c[i]>=10)
        {
            c[i+1] = 1;
            c[i] -= 10;
        }
    }
    if(c[lc]>0)lc++;
    for(int i=0;i<lc;i++)
        cout<<lc[i];
    return 0;
}

就是输入sa,sb,转到a,b里面,然后加起来,再算进位,有问题吗?
有,还是编译错误,没发现哪错了

问题蛮多的:

  1. Main.cc:29:19: error: invalid types ‘int[int]’ for array subscript 是说你的第29行 cout<<lc[i]; 这一句,lc是个int,不是数组,不能用括号 [ ]进行其值的引用。
  2. 第15行 a[i]=sb[i]-'0'; 这一句应该改为 b[i]=sb[i]-'0';
  3. 没考虑数组溢出的情况,也就是当输入数据超过了1010后的情况,
  4. 第12行和14行的循环条件 for(int i=0;i<=la;i++) 这样写的话会将输入字符串的结尾字符\0 也纳入转换成数字的计算中,应该为 for(int i=0;i<la;i++)
  5. 致命错误:结果转为两数和保存在 c的过程没考虑低位对齐的要素。比如 222 + 3333,你的算法的结果为 5553, 但实际需要低位对齐得出 3555。
    以上,好好修改

追问:
错误提示是这样的
Main.cc: In function ‘int main()’:
Main.cc:29:19: error: invalid types ‘int[int]’ for array subscript
cout<
我寻思着int[int]是怎么回事