C语言求阶乘

发布网友 发布时间:2022-04-22 17:24

我来回答

5个回答

热心网友 时间:2022-05-13 00:09

其实这个只能算到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));
}
}
我把你写的稍微改了一下,你看看。

热心网友 时间:2022-05-13 01:27

思路很简单:
乘法中判断0个数:
首先判断要乘的书数字中有多少10。
然后出现一个5就找一个偶数配对,
最后统计就行了、、、
阶乘就更简单,直接判断整数的大小,
例如:整数是n
那么输出就是n/5..就行了

热心网友 时间:2022-05-13 03:01

#include<stdio.h>
int func(int a)
{
int i,sum=1;
for(i=1;i<=a;i++)
sum*=i;
return sum;
}
void main()
{
int num;
printf("请输入a:");
scanf("%d",&num);
printf("阶乘:%d\n",func(num));
}

热心网友 时间:2022-05-13 04:53

long f(int x)
{
long r=1;
for(int i=1;i<=x;i++)
r=r*i;
return r;
}
main()
{int x=0;
printf("输入数字:\n");
scanf("%d",&x);
printf("%d\n",f(x));
}

热心网友 时间:2022-05-13 07:01

double f(int n){
int i;
double sum=1;
if(n<0) return 0;
for(i=1;i<=n;i++)
sum*=i;
return sum;
}
main(){
int n;
double S;
printf("input n:");
scanf("%d",&n);
S=f(n);
printf("\n%f",S);
getch();
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com