@[songshihao666888](/user/871868)
cin读入字符串自动忽略空格,所以你的循环应该改为`for (i = 0;i<x.size(); i++)`
另外指出你代码可能存在的问题:
- y.size() 可能小于 x.size(),导致你直接使用字符串进行加法的时候访问不到 y[i] 导致 RE
- 进位部分放到了循环外边,可能导致结果出现误差,例如 15+15 可能会等于 110
- 初始时 res 字符串为空,同样可能无法访问到 res[i]
by olegekei @ 2023-02-08 16:15:51
```cpp
#include <bits/stdc++.h>
using namespace std;
int a[520],b[520],c[520];
int main(){
int la, lb, lc = 1, x = 0;
string al, bl;
cin>>al>>bl;
la = al.size();
lb = bl.size();
for (int i = 0;i<la;a[la-i] = al[i]-48,i++);
for (int i = 0;i<lb;b[lb-i] = bl[i]-48,i++);
while (lc<=la||lc<=lb){
c[lc] = a[lc]+b[lc]+x;
x = c[lc]/10;
c[lc]%=10;
lc++;
}
c[lc] = x;
while (c[lc]==0&&lc>1) lc--;
for (int i = lc;i;i--) cout<<c[i];
return 0;
}
```
by Tx1234567 @ 2023-02-11 13:40:25
```cpp
#include<bits/stdc++.h>
using namespace std;
char x[505],y[505];
int a[505],b[505];
int main(){
cin>>x>>y;
a[0]=strlen(x);
b[0]=strlen(y);
for(int i=1;i<=a[0];i++) a[i]=x[a[0]-i]-'0';
for(int i=1;i<=b[0];i++) b[i]=y[b[0]-i]-'0';
a[0]=max(a[0],b[0]);
for (int i=1;i<=a[0];i++){
a[i]=a[i]+b[i];
a[i+1]+=a[i]/10;
a[i]=a[i]%10;
}
if(a[a[0]+1]!=0) a[0]++;
for(int i=a[0];i>0;i--){
cout<<a[i];
}
return 0;
}
```
by limeng911 @ 2023-02-14 21:20:06