这个阶乘的题目很容易的。代码如下:
#
include
main()
{
int
q,h=1;
for
(q=1,q<=10,q++)
{
h=q*h;
}
printf
(%d\n",h);
}
呵呵,望采纳哦。
给你个简单的,很好用,不用for循环,用递归调用求阶乘是递归调用的典型用法。我运行过,正确。
#include
void main()
{
float fac(int n);
int n;
float y;
printf("input an integer number:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%10.0f\n",n,y);
}
float fac(int n)
{
float f;
if(n<0)
{
printf("n<0,error!");
}
else
if(n==0||n==1)
f=1;
else
f=fac(n-1)*n;
return(f);
}
int main(void)
{
double sum=0, fac=1;
int i;
for (i=1; i<=20; )
{
sum=sum+fac;
i++;
fac=fac*i;
}
printf("%f\n", sum);
return 0;
}
如果你把变量的类型改成double的话,会正常的,
但如果求的阶乘再大还会变成负数的,主要是因为数据类型的益处问出
你定义的in型太小了,只能到32767,应该这样
main()
{
long int i,sum=0,fac=1;
for(i=1;i<=20;i++)
{
fac=fac*i;
sum=sum+fac;
}
printf("%d\n",sum);
getch();