码迷,mamicode.com
首页 > 编程语言 > 详细

c语言中阶乘的精确值

时间:2015-07-25 18:08:14      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

  对于大数的操作,可能超出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("\n");
    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,运算成功!

                            

c语言中阶乘的精确值

标签:

原文地址:http://www.cnblogs.com/liujunming/p/4676250.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!