编程新手遇到问题啦啦啦求大佬帮助下

编译的时候显示错误是 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;
}