• 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;
    }

  • 相关阅读:
    点击区域外隐藏该区域,event.stopPropagation()
    PHP 笔记一(systax/variables/echo/print/Data Type)
    <hr> 的18种样式
    CSS 设置背景透明度,不影响子元素
    console.dir() 与 console.log() 区别
    JS 鼠标滚轮事件(mousewheel/DOMMouseScroll)
    HTML 字符图案
    CSS 样式优先级
    替换元素和不可替换元素,块级元素和行内元素
    CSS3 笔记五(Buttons)
  • 原文地址:https://www.cnblogs.com/w413133157/p/1650617.html
Copyright © 2020-2023  润新知