zoukankan      html  css  js  c++  java
  • c语言中阶乘的精确值

      对于大数的操作,可能超出int,甚至long的表示范围,对此,可以使用数组来存储大数,下列代码为求1000以内数的阶乘的代码,代码如下:

    #include <stdio.h>
    #include<string.h>
    const int max=3000;
    int main()
    {
        int f[3000];//存放最终的结果
        int i,j,n,c,tem;
        memset(f,0,sizeof(f));
        scanf("%d",&n);
        f[0]=1;
        for(i=2;i<=n;i++)
        {
            c=0;
            for(j=0;j<max;j++)
            {
                tem=i*f[j]+c;
                c=tem/10;
                f[j]=tem%10;
    
            }
        }
        for(j=max-1;j>=0;j--)
            if(f[j]!=0)
                break;
            for(i=j;i>=0;i--)
                printf("%d",f[i]);    
            printf("
    ");
        return 0;
    }

    对于这段代码的理解,可以利用最简单的例子来阐明。

    例如,利用int 数组来存储结果,数组长度为4,数组名为a.

    在45*33的运算中,利用小学的笔算方法如下:

                                    

      在计算机语言中,我们是这样计算的,首先a[0]=5,a[1]=4,a[3]=0,a[4]=0;

    33*a[0]=135,此刻将a[0]赋值为5,进位为c=13

    第二步

    33*a[1]+c=148,此刻将a[1]赋值为8,进位为c=14

    第三步

    33*a[2]+c=14,此刻将a[2]赋值为4,进位为c=1

    第四步

    33*a[3]+c=1,此刻将a[3]赋值为1,运算成功!

                                

  • 相关阅读:
    Spring Boot + Vue 开发前后端分离的员工管理系统
    树莓派4B部署docker
    免费的论文查重网站
    JavaScript设计模式
    js继承的用法
    js闭包与柯里化
    Javascript编程小技巧
    spy-debugger和fiddler实现移动端抓包
    grid布局
    js判断对象是否为空对象的几种方法
  • 原文地址:https://www.cnblogs.com/liujunming/p/4676250.html
Copyright © 2011-2022 走看看