zoukankan      html  css  js  c++  java
  • C 语言利用数组实现大数计算


    #include "stdafx.h"
    #define BIT 10000


    /************************************************************************
    函数功能大数计算
       
    参数1: char szByNum[] //被乘数 [0]位为字符长度
       
    参数3: char szNum[]   //乘数   [0]位为字符长度
       
    参数5: char aryResult[]   // 用来放结果 [0]位为结果长度
        
    备注函数中的BIT为进位数,在宏定义
    ************************************************************************/

    void BigNumImul(char szByNum[], char szNum[], int aryResult[])
    {
        int nByNumLen, nNumLen, nTempLen, nResultLen = 1;
        int i;

        //
    乘数长度从右向左依次
        for (nNumLen = szNum[0]; nNumLen > 0; nNumLen--)
        {
            nTempLen = nResultLen;
            for (nByNumLen = szByNum[0]; nByNumLen > 0; nByNumLen--, nTempLen++)
            {
                //
    结果第一次从第一位开始,第二次从第二位开始放
                aryResult[nTempLen] = aryResult[nTempLen] + (szNum[nNumLen] - 0x30) * (szByNum[nByNumLen] -0x30);
            }
            //
    下一次得从第二位开始
            nResultLen++;
            //
    进位处理
            for (i = 1; i <= aryResult[0]; i++)
            {
                if (aryResult[i] > BIT)
                {
                    aryResult[i+1] = aryResult[i+1] + aryResult[i] / BIT;
                    aryResult[i] = aryResult[i] % BIT;
                }
            }
            if (aryResult[i] > 0)
            {
                aryResult[0]++;
            }
        }
    }


    int main()
    {
        char szByNum[100], szNum[100];
        int aryResult[200] = {0};
        int i;
        
        printf("
    请输入被乘数: ");
        gets(&szByNum[1]);
        szByNum[0] = strlen(szByNum) - 1;
        flushall();
        printf("
    请输入乘数: "
    );
        gets(&szNum[1]);
        szNum[0] = strlen(szNum) - 1;
        aryResult[0] = (int)szNum[0];
        BigNumImul(szByNum, szNum, aryResult);
        for (i = aryResult[0]; i > 0; i--)
        {
            printf("%d", aryResult[i]);
        }
        printf("\r\n");
        system("pause");
        return 0;
    }

  • 相关阅读:
    书摘--可能与不可能的边界
    电影-茶室
    使用unittest,if __name__ == '__main__':里代码不执行的解决办法
    Pycharm中配置鼠标悬停快速提示方法参数
    Python 解决pip使用超时的问题
    Linux性能监控命令——sar详解
    Linux系统管理
    Linux top命令的用法详细详解
    CentOs7排查CPU高占用
    centos 7 查看磁盘io ,找出占用io读写很高的进程
  • 原文地址:https://www.cnblogs.com/w413133157/p/1650617.html
Copyright © 2011-2022 走看看