• 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,运算成功!

                                

  • 相关阅读:
    【 POJ
    C语言常用数学函数及其用法
    【HDU3065】 病毒侵袭持续中(AC自动机)
    windows版本cloudbase-init流程说明
    Metadata 的概念
    DataSource的设置
    cloud-utils
    cloud-init代码调试方法
    cloud-init简介及组件说明
    使用dib element proliant-tools制作deploy image
  • 原文地址:https://www.cnblogs.com/liujunming/p/4676250.html
Copyright © 2020-2023  润新知