作业帮 > 综合 > 作业

c 语言 输入m,n(M>=n>=0)后,计算下列表达式的值并输出: m!/n!*(m-n)!用函数调用.fact()计

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/27 21:08:39
c 语言 输入m,n(M>=n>=0)后,计算下列表达式的值并输出: m!/n!*(m-n)!用函数调用.fact()计算阶乘.
m!/n!*(m-n)! 返回float 高手指点
#include
main()
{
 int fact(int a);
 int m,n,q,k;
 scanf("%d",&m);
 scanf("%d",&n);
 if(m>n)
 {q=m-n;
 float num1;
num1=fact(m);
 //for(int i=m-1;i>0;i--){
 // m=m*i;}
 printf("%f\n",num1);
 n=fact(n);
 printf("%d\n",n);
 q=fact(q);
 printf("%d\n",q);
 k=m/(n*q);
 printf("%d",k);}
 /*if(m==n)
 {
k=0;
printf("%d",k);
}*/


}
int fact (int a)
{
float num;
for(int i=a-1;i>0;i--){
 num=num*i;
}
return num;
 printf("%d",num);
}
fact()错了,应该是
int fact (int a)
\x09\x09{
float num; // 没有初始化
\x09\x09for(int i=a-1;i>0;i--){ // i需要从a开始
\x09\x09 num=num*i;
\x09}\x09
return num; // 从浮点数转换成整数,损失了精度,这个在主函数中也有这个问题,不过如果数字很小,没有问题
\x09\x09 printf("%d",num);
}