#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int a[1010],b[1010],sum[1010];
int main()
{
string s1,s2;
cin>>s1>>s2;
a[0]=s1.length();
b[0]=s2.length();//长度
for(int i=1;i<=a[0];i++)a[i]=s1[a[0]-i]-48;
for(int i=1;i<=b[0];i++)b[i]=s2[a[0]-i]-48;//转为数字
int i,flag=0;//没问题
for(i=1;i<=max(a[0],b[0])+1;i++)//
{
sum[i]+=a[i]+b[i];//“+”可能有已经进一的情况
if(sum[i]>=10)//满十进一
{
sum[i]%=10;
sum[i+1]++;
}
}
sum[0]=i;//新长度
if(sum[i+1]>0)sum[0]++;//如果多一位,数位加一
for(int i=sum[0];i>=1;i--)
{
if(flag==0&&sum[i]==0)continue;//还没有输出之前数位里有零(即前导零)就跳过
flag=1;//无前导零
cout<<sum[i];//输出
}
if(flag==0)cout<<0;//只有零
return 0;
}
写注释是为了让自己思路不中断
输入
11111111111111111111111111 9999999999999999999999999999999999
正确输出 10000000011111111111111111111111110
我的输出
-49-49-49-49-48-48-48-4711111111111111111111111110
感谢解答QwQ