#大数加法#基本题解: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;