第一篇、C_高精度加法

简介:

  C语言中,整型占4字节,现在要计算两个100(假设)位以内的数想加,如果只是用整型去存储,明显就会越界。那么,我们有什么好的方法去完成这一操作呢?

1.用数组实现

  数组中可以可以存储一定长度的字符串。

// 移位
void move_num(char num[])
{
    int n = strlen(num);
    int j = 100;
    int i;
    for(i=1;i<=n;i++)
    {
        num[j] = num[n-i];
        j--;
    }
    // 在空余位上补0
    while(j>=0)
    {
        num[j] = '0';
        j--;
    }
}

// 交换(数组中存放的都是字符,要转换成整数才可以相加)
void conv_num(char num[])
{
    int i ;
    for(i=0;i<100;i++)
    {
        num[i] = num[i] - '0';
    }
}

// 相加加
void add(char num1[],char num2[])
{
    int i;
    for(i = 100; i >0;i--)
    {
        num1[i] =  num1[i] + num2[i];
        if(num1[i] >= 10)
        {
            num1[i-1] += num1[i] / 10; // 进位
            num1[i] = num1[i] % 10;
        }
    }
}

// 输出
void print(char num[])
{
    int i = 0;
     // 让前面的0不输出
    while(num[i] == '0')
    {
        i++;
    }
    for(;i<100;i++)
    {
        printf("%s",num[i]);
    }
}
原文地址:https://www.cnblogs.com/HJQ2016/p/5826269.html