答案:#include<stdio.h>
void main()
{
int n,fact=1,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
fact*=i;
printf("fact=%d\n",fact);
}
其他:#include <stdio.h>
int f(int n)
{ if(n==1) return n;
else return n*f(n-1);
}
void main()
{ int n;
scanf("%d",&n);
printf("%d\n",f(n));
}
希望采纳!!!!! #include<stdio.h>
#define N 50 /*可以是任意一个数的阶乘,当然要计算机能够存的下*/
int main()
{
int a[100], l=0, i, j;
for(i=0; i<100; i++)
a[i]=0;
a[0]=1;
for(i=2; i<=N; i++)
{
for(j=0; j<=l; j++)
a[j] *= i;
l+=3;
for(j=0; j<l; j++)
if(a[j]>9)
{
a[j+1]+=a[j]/10;
a[j] %=10;
}
while(a[l]==0) l--;
}
for(i=l; i>=0; i--)
printf("%d", a[i]);
printf("\n");
}
看了 楼下两个 用int 存储 50!
感觉有点不可思议, 至少应该用double啊,用double虽然不能保证精度,但至少可以很接近结果。
3楼的 一句话:“老师说过,可以自已定义一个类型来表示更大的数。。。”
自己是可以定义,你可以定义任意类型。只不过需要你自己来实现。 50!这种问题 就相当于 大数 的操作。
网上可以下载到大树类, 支持 大数的+ - * / 开平方, 开根号,(几乎所有math里的函数)...。
//求n的阶乘
int sum=0;
for(int i=1;i<=n;i++)
sum=sum+i;
return sum;
上一个:c语言问题
下一个:C语言...