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

 我来答
弈轩
2018-03-10 · 知道合伙人教育行家
弈轩
知道合伙人教育行家
采纳数:1029 获赞数:7544
电子设计大赛三等奖 优秀毕业生

向TA提问 私信TA
展开全部

如图


可以求到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); //表示溢出
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式