C语言编程 m和n为两个整数且m大于n求p=m!/(n!(m-n)!) 在下方的空白处填写代码

float fun(int m, int n)
{
float p = 0;
long s1=1,s2=1,s3=1;//使用long型存储阶乘数,防止数据过大,内存溢出
int i,j;
if(m > n) //判断m>n,提高程序健壮性
{
for(i = 1; i <= m; i++)//计算m的阶乘
{
s1 *= i;
}

for(i = 1; i <= n; i++)//计算n的阶乘
{
s2 *= i;
}

for(i = 1; i <= (m-n); i++)//计算(m-n)的阶乘
{
s3 *= i;
}

p = 1.0 * s1 / s2 / s3; //计算p=m!/(n!(m-n)!)

return p;
}
else
{
cout << "输入错误!" << endl;
return -1;
}
}

函数值带回。m与n为两个正整数,且要求m>n。 p=m!/n!(m-n)!

/* 是p=m!/n!(m-n)!*/
float fun(int m,int n)
{
float p,t=1.0;
int i;
for (i=1;i

1、此题先构造一个求阶乘的函数,然后3次调用该函数,即可。
2、程序的源代码如下:
#include

int fact(int n);
int main()
{
int m,n,c;

printf("请输入m的值:
");
scanf("%d",&m);
printf("请输入n的值(n<m):
");
scanf("%d",&n);

c=fact(m)/(fact(n)*fact(m-n));

printf("请输出c的值:
");
printf("%d
",c);

return 0;
}

int fact(int n)//用递归求n的阶乘
{
if(n == 0 || n == 1)
return 1;
return
n*(fact(n-1));
}
3、运行结果如下,至于程序的漏洞可以自己完善以提高程序的容错能力。