高精度加法简洁代码
#include<iostream> using namespace std; string a,b; int len1,len2,len; string str; int main() { cin>>a; cin>>b; len1 = a.length(); len2 = b.length(); if(len1>len2)//补齐两个代码的长度,不足的用'0'补齐 { for(int i=1;i<=len1-len2;i++) { b = "0" + b; } }else{ for(int i=1;i<=len2-len1;i++) { a = "0" + a; } } int temp;//记录每个位数相加后数目的大小 int cf = 0;//记录每次进位 len = a.length();// 记录最终的长度 for(int i=len-1;i>=0;i--)//需要从后往前遍历 { temp = a[i]-'0' +b[i]-'0'+cf; cf = temp/10; temp %=10; str = char(temp+'0') +str; } if(cf !=0) str = char(cf+'0') +str;//最后如果还有进位,则需要再次相加 cout<<str<<endl; }
以上代码中,预处理为比较两个字符串的长度,长度较短者进行“0”+ 补齐
核心代码为:进行的从后往前的遍历过程,余数每次的相加,对temp进行的取余。