当前位置:编程学习 > C/C++ >>

用c语言编写阶乘

答案:#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语言...

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,