Ⅰ C语言编程两个数求和
用数组做,高精度算法。数组的每一个元素放一个位,如a[0]代表个位,a[1]代表十位,依此类推。
下面是算法的实现:
c[0]=(a[0]+b[0])%10; //c[x]为结果,a[x],b[x]为两个加数
overflow=(a[0]+b[0])/10; //overflow为进位的值
for(i=1;i<n;i++) //n为你两个加数的最大位数
{
c[i]=(a[i]+b[i]+overflow)%10; //a和b的第i位相加再加上第i-1位的进位的和的个位是c第i位的值
overflow=(a[i]+b[i]+overflow)/10; //a和b的第i位相加再加上第i-1位的进位的和的十位是向高位的进位
}
当然读数的时候要注意,由于位数太大,可以将其当成字符串读,再按位分离。(可能还有其他办法,不列举)
举个实例
987+87=?
个位相加c[0]=(a[0]+b[0])%10=(7+7)%10=4 ,进位 overflow=(a[0]+b[0])/10=1
十位相加c[1]=(a[1]+b[1]+overflow)%10= (8+8+1)%10=7 进位 overflow=(a[1]+b[1]+overflow)/10=1
百位相加c[2]=(a[2]+b[2]+overflow)%10=(9+0+1)%10=0 进位 overflow=(a[1]+b[1]+overflow)/10=1
。。。下面类推