永发信息网

C语言算组合题找错误

答案:2  悬赏:20  手机版
解决时间 2021-06-05 10:22
  • 提问者网友:夢醒日落
  • 2021-06-04 20:28

#include<stdio.h>
int fact (int n);
int main()
{
int n,m,result=0;
printf("Enter m:");
scanf("%d",&m);
printf("Enter n:");
scanf("%d",&n);
if(m>n)printf("输入错误");
else { n = fact(n); //求result = n!/(m!*(n-m)!);
m = fact(m);
result = n/(m*(n-m));
printf("result = %d",result); }
}
int fact (int n)
{
int i,sum=1;
for(i=1;i<=n;i++)
sum = sum*i;
return sum;
}

为什么输入

Enter m: 5

Enter n: 12

result = 0

?

最佳答案
  • 五星知识达人网友:酒醒三更
  • 2021-06-04 21:40

你要求result = n!/(m!*(n-m)!)而不是result = n!/(m!*(n-m));


n-m的阶乘没求!


#include<stdio.h>
int fact (int n);
int main()
{
int n,m,k,result=0;
printf("Enter m:");
scanf("%d",&m);
printf("Enter n:");
scanf("%d",&n);
if(m>n)printf("输入错误");
else { n = fact(n); //求result = n!/(m!*(n-m)!);
m = fact(m);


k = fact(n-m);
result = n/(m*k);
printf("result = %d",result); }
}
int fact (int n)
{
int i,sum=1;
for(i=1;i<=n;i++)
sum = sum*i;
return sum;
}

全部回答
  • 1楼网友:白昼之月
  • 2021-06-04 22:02

嘻嘻

#include<stdio.h> int fact (int n); int main() { int n,m,k,result=0; printf("Enter m:"); scanf("%d",&m); printf("Enter n:"); scanf("%d",&n); if(m>n)printf("输入错误"); else { k=n-m; n = fact(n); //求result = n!/(m!*(n-m)!); m = fact(m);

result = n/(m*fact(k)); printf("result = %d\n",result); } } int fact (int n) { int i,sum=1; for(i=1;i<=n;i++) sum = sum*i; return sum; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯