编译的时候显示错误是 id returned 1 exit status.
我的代码是:
#include
double fact(int n);
main()
{int m,n;
double result;
scanf("%d %d",&m,&n);
if(m>n)
printf("error!!");
else
{
result=fact(n)/(fact(m)*fact(n-m));
printf("result=%lf",result);
}
double fact(int n);
{ int i,s=1;
if(n!=1)
{for(i=1;i<=n;i++)
{s*=i;
}
return s;
}
}
}
result=fact(n)/(double)(fact(m)*fact(n-m));
否则是整除
还有,int最大只有21亿,对于阶乘来说,m和n要小一点,否则溢出。
缺了点东西,把代码格式好好调一调就好了
#include "stdio.h"
double fact(int n);
main()
{
int m,n;
double result;
scanf("%d %d",&m,&n);
if(m>n)
printf("error!!");
else
{
result=fact(n)/(fact(m)*fact(n-m));
printf("result=%lf",result);
}
}
double fact(int n)
{
int i,s=1;
if(n!=1)
{
for(i=1;i<=n;i++)
{
s*=i;
}
return s;
}
}
``` #include "stdio.h"
double fact(int n);
main()
{
int m,n;
double result;
scanf("%d %d",&m,&n);
if(m>n)
printf("error!!");
else
{
result=fact(n)/(fact(m)*fact(n-m));
printf("result=%lf",result);
}
}
double fact(int n)
{
int i,s=1;
if(n!=1)
{
for(i=1;i<=n;i++)
{
s*=i;
}
return s;
}
}
上面代码还是有问题的,当n-m = 1或者n =1时,函数的返回值是什么?
还有你函数的返回值 是double类型的,而定义s是int类型的,不能直接返回s,s 做强制转换,
虽然大多时候运行都是正确的,但这些都是BUG的来源。应该改成这样
double fact(int n)
{
int i,s=1;
if(n!=1)
{
for(i=1;i<=n;i++)
{
s*=i;
}
}
return (double)s;
}