#大数加法#基本题解:1.用整型数组存字符串。2.判断每个数组中的数能否进位,做进位操作。3.逆序输出。
第一步:
存的时候最开始太天真忘记考虑整数与字符的去别了
for(int i=0;i<s.length();++i){
aa[i]=s[i];
}
结果出来的不对 8+8都等于56了
考虑了之后要注意减去0的ASCII码值转换成整数
for(int i=0;i<s.length();++i){
aa[i]=s[s.length()-i-1]-'0';
}
第二步:
最开始判断的是用一个数组来相加判断然后更改
for(int i=0;i<=k;++i){
if(sum[i]+bb[t.length()-i]>=10){
sum[i]-=10;
sum[i+1]+=1;
}
}
但是bb[t.length()-i]容易出错考虑不出加的是否正确便在初始化是加了上去
for(int i=0;i<s.length();++i){
aa[i]=s[s.length()-i-1]-'0';
sum[i]=aa[i];
}
for(int i=0;i<t.length();++i){
bb[i]=t[t.length()-i-1]-'0';
sum[i]+=bb[i];
}
int k=t.length()<s.length()?s.length():t.length();
int ans=0;
for(int i=0;i<=k;++i){
if(sum[i]>=10){
sum[i+1]+=sum[i]/10;
sum[i]=sum[i]%10;
}
}
第三步:逆序输出前面比叫顺利将for循环正序条件到过来了
string a;
for(int i=k;i>=0;--i){
a+=sum[i]+'0';
}
最后return a;
提交之后没有清除前导零又删除了前导零
bool flag=0;
int w=0;
string a;
for(int i=k;i>=0;--i){
w=sum[i];
if(w==0&&flag==0)
continue;
else
flag=1;
a+=sum[i]+'0';
}
第五步:直接判断s或t只有0的可能
if(s=="\0"||s=="0") return t; if(t=="\0"||t=="0") return s;

京公网安备 11010502036488号