zoukankan      html  css  js  c++  java
  • 第一篇、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]);
        }
    }
  • 相关阅读:
    软件开发记录04
    《敏捷软件需求》阅读笔记02
    软件开发记录03
    《敏捷软件需求》阅读笔记01
    软件开发记录02
    Leetcode
    Leetcode
    Leetcode
    leetcode -625-Minimum Factorization
    51Nod
  • 原文地址:https://www.cnblogs.com/HJQ2016/p/5826269.html
Copyright © 2011-2022 走看看