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

如题所述

如图


可以求到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(n<0)return -1; //负数的阶乘不能这么算,返回-1表示错误
for(; n>1 ;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); //表示溢出
}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网