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的吗?谢谢了
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;