#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);
}
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);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2009-08-13
为了实现你说的功能,我吧你的程序改成一下,就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;i++)
f=f*i;
return(f);
}
你自己对比一下是什么问题吧
第2个回答 2009-08-13
#include "stdio.h"
int fac(int n);
void main()
{
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
printf("%d!=%d\n",i,fac(i));
}
int fac(int n)
{
int f=1;
int i;
for (i=1;i<=n;i++)
f=f*i;
return(f);
}
这样是没有问题的。此文件必须是.c文件,不能是.cpp文件
你那个申明函数不应该放在main函数里面。那个long用不大来
int fac(int n);
void main()
{
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
printf("%d!=%d\n",i,fac(i));
}
int fac(int n)
{
int f=1;
int i;
for (i=1;i<=n;i++)
f=f*i;
return(f);
}
这样是没有问题的。此文件必须是.c文件,不能是.cpp文件
你那个申明函数不应该放在main函数里面。那个long用不大来
第3个回答 2009-08-13
#include "stdio.h"
void main()
{long fac(long n);
long b;
int a;
scanf("%d",&a);
b= fac(a);
printf("%d!=%ld\n",a,b);
getch();
}
long fac(long n)
{
long f=1;
int i;
for (i=1;i<=n;i++)
f=f*i;
return(f);
}
就这个可以了
void main()
{long fac(long n);
long b;
int a;
scanf("%d",&a);
b= fac(a);
printf("%d!=%ld\n",a,b);
getch();
}
long fac(long n)
{
long f=1;
int i;
for (i=1;i<=n;i++)
f=f*i;
return(f);
}
就这个可以了
第4个回答 2009-08-13
#include "stdio.h"
void main()
{long fac(long);
long i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
printf("%ld!=%ld\n",i,fac(i));//输出fac(i)注意去类型
}
long fac(long n)//函数 返回 的类型注意
{
long f=1;
int i;
for (i=1;i<=n;i++)
f=f*i;//不用进行强制转类型
return(f);
}
void main()
{long fac(long);
long i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
printf("%ld!=%ld\n",i,fac(i));//输出fac(i)注意去类型
}
long fac(long n)//函数 返回 的类型注意
{
long f=1;
int i;
for (i=1;i<=n;i++)
f=f*i;//不用进行强制转类型
return(f);
}
第5个回答 2009-08-13
double只是精度高,这个求阶乘用long就好了