C语言简单问题,请高手回答下

来源:百度知道 编辑:UC知道 时间:2024/06/24 07:48:39
#include "stdio.h"
void main()
{long fac(long);
long i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
printf("%ld!=%lf\n",i,fac(i));

}
long fac(long n)
{
long double f=1.0;
int i;
for (i=1;i<=n;i++)
(int)f=f*i;
return(f);
}
此程序的目的为输入n ,依次输出1-n的阶乘,但是这个程序输出来全是0,why?
为了增加计算量,我要用double的,可以改成double的吗?谢谢了

#include <stdio.h>

long fac(long);

int main()
{
long i,n;
while (scanf("%ld",&n) != EOF)
{
for(i=1;i<=n;i++)
printf("%ld! = %ld\n",i,fac(i));
}
}
long fac(long n)
{
long f=1, i;
for (i=1;i<=n;i++)
f=f*i;
return(f);
}

为了实现你说的功能,我吧你的程序改成一下,就OK了:

#include "stdio.h"

void main()

{

    long fac(long n);

    long i,n;

    scanf("%ld",&n);

    for(i=1;i<=n;i++)

        printf("%ld!=%ld\n",i,fac(i));

/*  getch();*/

}

long fac(long n)

{

    long f=1;

    long i;

    for(i=1;i<=n;