Ⅰ 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
。。。下面類推