c语言自定义函数整数阶乘 c语言整数的阶乘

C语言中,写函数,求一个整数的阶乘

如图

创新互联建站是工信部颁发资质IDC服务器商,为用户提供优质的托管服务器服务

可以求到20的阶乘,源码请看网页端。如图,如有疑问或不明白请追问哦!

源代码:

#include stdio.h

typedef __int64 LONG; //自定义64位长整型,用 LONG 表示

typedef char BYTE; //自定义8位短整型,用 BYTE 表示

LONG factorial(BYTE n){ //求n的阶乘,由于阶乘增长非常快,所以能求的n有限。除非用自定义大数据类型

LONG fact=1,last;

if(n0)return -1; //负数的阶乘不能这么算,返回-1表示错误

for(; n1 ;n--){

last=fact; //记录上次求得的结果

fact *= n;

if(fact = 0){ //正常来说fact必>0,否则一定发生了溢出。若此阶乘会发生溢出,也一定会有fact=0

//printf("fact=%I64d\tn=%d \n",fact,n);

return -1; //如果值溢出则返回-1

}

}

return fact;

}

int main()

{

BYTE n=0,count=0;

LONG fact=1;

for(; n 0x7f ; n++){ //从0到 BYTE 型最大数

count++;

fact=factorial(n);

if(fact!=-1) //仅当未溢出时显示

printf("fact(%d)=%I64d \n",n,fact);

}

printf("count=%d\n",count); //表示溢出

}

C语言求阶乘

其实这个只能算到12的阶乘,因为13的阶乘等于6227020800,它已经大于2的31次方了,也就是超过了int所能表示的最大值了(溢出),所以你可以把int

改为double.

#include

stdio.h

#include

stdlib.h

double

f(int

n)

{

if(n==0||n==1)

return

1;

return

n*f(n-1);

}

int

main()

{

int

n,k,i;

printf("请输入一个数:");

scanf("%d",k);

for(i=1;i=k;i++)

{

printf("第%d个数为:",i);

scanf("%d",n);

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

}

}

我把你写的稍微改了一下,你看看。

c语言,输入n,用函数求n的阶乘

下构思下程序的基础, 让用户自定义输入一个数作为阶乘数, 当超过20时,输出“Nis too big”. 需要用到IF函数,以下为详细过程。 #includeiostream us

int getFactorial(int data) //求阶乘;bai

{

int resData=1;

for (int i=0;idata;i++)

{

duresData*=i;

}

return resData;

}

扩展资料:

0!=1。

定义的必要性

由于正整数的阶乘是一种连乘运算,而0与任何实数相乘的结果都是0。所以用正整数阶乘的定义是无法推广或推导出0!=1的。即在连乘意义下无法解释“0!=1”。

给“0!”下定义只是为了相关公式的表述及运算更方便。

参考资料来源:百度百科-n!


分享题目:c语言自定义函数整数阶乘 c语言整数的阶乘
文章地址:http://myzitong.com/article/dojsdge.html