程序员的自我修养

高精度运算 -C语言

2020-05-25  本文已影响0人  殁月

如何进行大整数加法?

需要用到数组,模拟竖式运算。

一般而言,拿数组零号元素存最低位,因为如果存最高位的话,需要考虑进位问题,要为进位预留空间。

这里以** 1234567890+9987654321 **为例

int main()
{
    int a[10] ={0,9,8,7,6,5,4,3,2,1};
    int b[10] ={1,2,3,4,5,6,7,8,9,9};
    //求和存放的数组,因为可能有进位 ,多给他一位空间 
    int sum[11] = {0};
     //标志进位
    int carry = 0; 
//  循环计算从最低位到最高位的值(假如最高位无进位) 
    for (int i = 0 ; i < 10 ; i ++){
        int s;
        s = a[i]+b[i] + carry; 
        carry = s/10; 
        sum[i] = s%10;
    }
//  如果有进位 手动给进位赋值 
    sum[10] = carry;
    for(int i = 10 ;i >=0 ; i--){
        printf("%d",sum[i]);
    }

        
    }
上一篇 下一篇

猜你喜欢

热点阅读