在一些时候,int或者long类型的数据往往满足不了数据容量的要求,这时需要用到数组或者字符串进行操作。考虑到数据的位数并不是一个确定的值,运用string来处理可以简化思维。在进行运算之前,需要明确下面几点要求:
1.将两组数据中位数大的放在前面,方便后面处理;
2.字符转数字,减去‘0’;数字转字符加上‘0’;
3.进位考虑
4.最高位时进位判断
以下是大数相加函数:
string BigPlus(string num1,string num2){
//默认使得num1位数大于num2,方便后续运算。
if(num1.size()<num2.size()){
string temp=num2;
num2=num1;
num1=temp;
}
int lenth1=num1.size(),lenth2=num2.size(),flag=0,a,b,sum;//初始化位数、进位标志、定义转换数字a、b和sum
while(lenth1>0){//lenth1总是大于等于lenth2
a=num1[lenth1-1]-'0';//转换为数字
if(lenth2>0){
b=num2[lenth2-1]-'0';//转换为数字
}
else{
b=0;//num2位数加完了
}
sum=a+b+flag;//当前位加进位
if(sum>=10){//进位判断
flag=1;//进位标记
num1[lenth1-1]='0'+sum%10;//取个位
}
else{
flag=0;//进位标记清除
num1[lenth1-1]='0'+sum;
}
//每次向前进位
lenth1--;
lenth2--;
}
if(flag){
num1="1"+num1;//当最高位进位,在前面加1
}
return num1;//返回得到的和
}