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

#include<stdio.h>floatfun(intm,intn){//这是代码填写处}p=1.0*s1/s2/s3;returnp;}main()/*主函数*/{... #include <stdio.h>
float fun(int m, int n)
{
//这是代码填写处
}
p=1.0*s1/s2/s3;

return p;

}

main() /* 主函数 */
{ void NONO ();
printf("P=%f\n", fun (12,8));
NONO();
}

void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i, m, n ;
float s;

fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp, "%d,%d", &m, &n) ;
s = fun(m, n) ;
fprintf(wf, "%f\n", s) ;
}
fclose(fp) ;
fclose(wf) ;
}
上面是问题
下面是部分代码:
#include <stdio.h>
float fun(int m, int n)
{

}

main() /* 主函数 */
{ void NONO ();
printf("P=%f\n", fun (12,8));
NONO();
}

void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i, m, n ;
float s;

fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp, "%d,%d", &m, &n) ;
s = fun(m, n) ;
fprintf(wf, "%f\n", s) ;
}
fclose(fp) ;
fclose(wf) ;
}
展开
 我来答
百度网友57b3b8d
2014-03-25 · TA获得超过280个赞
知道小有建树答主
回答量:238
采纳率:85%
帮助的人:176万
展开全部
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;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式