求编写一个求100的阶乘的程序。

求编写一个求100的阶乘的程序。,第1张

#include <stdioh>

#define N 100 //计算10的阶乘,最多只能算到9999 long a[8916];int main(int argc, char argv[])

{

long n,i,c,len;

a[0]=1;

len=1;

for( n=N;n>1;n--)

{

for(c=0,i=0;i<len;i++)

{

long p=a[i]n+c;

a[i]=p%10000;

c=p/10000;

}

a[i]= c;

if(c>0)

{

len++;

}

} printf("%d",a[len-1]);

for(i=len-2;i>=0; i--)

{

printf("%04d",a[i]);

}

printf("\n");

return 0;

}

利用阶乘的定义求解阶乘     

#include<stdioh>

void main()   

    int i,n;     

    long f=1;   

    scanf("%d",&n);

    for(i=1;i<=n;i++)

        f=fi;   

    printf("%d!=%ld",n,f);

}    

递归方法求阶乘

#include "stdioh"

long fact(int n)

{  

    long s;  

    if(n<=1)

        s=1; 

    else     

        s=nfact(n-1); 

    return s;

}    

void main()

{

    int num;   

    scanf("%d",&num);   

    printf("%d!=%ld\n",num,fact(num)); 

}

常见的有两种:

递归版本:

int Fac(int n){

    if(n==0) return 1;

    return nFac(n-1);

}

还有一种是循环版:

int ans=1;

    for(int i=1;i<=n;i++) ans=i;

测试方法:

#include<stdioh>

int Fac(int n){

    if(n==0) return 1;

    return nFac(n-1);

}

int main(){

    int n;

    while(scanf("%d",&n)!=EOF){

        int ans=1;

        for(int i=1;i<=n;i++) ans=i;

        printf("%d %d\n",ans,Fac(n));

    }

    return 0;

}

有个值得注意的地方:阶乘时,数增大的很快,在n达到13时就会超过int的范围,此时可以用long long或是 __int64来存储更高精度的值,如果还想存储更高位的,需要用数组来模拟大数相乘。

所谓n的阶乘就是从1到n的累积,所以可以通过一个for循环,从1到n依次求积即可。

参考代码:

#include "stdioh"

int main() {

int n,i,s=1。

scanf("%d",&n)。

for(i=1;i<=n;i++)//for循环求累积。

s=si。

printf("%d\n",s)。

return 0。

注意事项:

1、任何大于1的自然数n阶乘表示方法:n!=1×2×3×……×n 或 n!=n×(n-1)。

2、n的双阶乘:当n为奇数时表示不大于n的所有奇数的乘积。

如:7!=1×3×5×7。

3、当n为偶数时表示不大于n的所有偶数的乘积。

如:8!=2×4×6×8。

4、小于0的整数-n 的阶乘表示:

(-n)!= 1 / (n+1)。

5、0的阶乘:0!=0。

6、组合数公式。

以上就是关于求编写一个求100的阶乘的程序。全部的内容,包括:求编写一个求100的阶乘的程序。、用C语言写程序:求N的阶乘。要求用到数组。、C语言中如何编程计算阶乘等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9318508.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存