‘壹’ 编写求Cmn组合公式的函数。函数如下:long Cmn(int m ,int n)
#include<stdio.h>
#include<stdio.h>
long
Cmn(int
m,int
n)
{
long
countM=1,countN=1,countMN=1;
int
i;
for(i=1;i<=m;i++)
countM=countM*i;
for(i=1;i<=n;i++)
countN=countN*i;
for(i=1;i<=(m-n);i++)
countMN=countMN*i;
return
countM/(countN*countMN);
}
void
main()
{
int
m,n;
long
result;
printf("请输入m:
\n");
scanf("%d",&m);
printf("请输入n:
\n");
scanf("%d",&n);
result=Cmn(m,n);
printf("结果为:
%ld
\n",result);
}
‘贰’ C语言程序,求组合数Cmn,哪里出错了
计算排列数时,计数错误。若起始条件不变,则循环条件应为i<=n或i<n+1
#include"stdio.h"
voidmain()
{
longm,n,i,fac,c,s=1;
scanf("m=%ld,n=%ld",&m,&n);
if(m<1||n<0||m<n)c=0;//输入错误
else{
n=m<2*n?m-n:n;
for(s=1,i=n;i;i--)s*=m--;
for(fac=1,i=n;i;fac*=i--);
c=s/fac;
}
printf("c=%ld",c);
}
‘叁’ C语言入门题目,计算:Cmn=N!/((N-M)!M!)不会打是排列选择的n选m怎么编写程序我写的怎么不对了(C语言入门)
没读懂你这句“不会打是排列选择的n选m怎么编写程序”,但是你这个程序是对的,有个小问题就是你把 else{ a=fun(m);b=fun(e);c=fun(m);d=b*c;里面的fun(n)改过来就对了
‘肆’ C语言编程:用函数求Cmn=m!/(n!(m-n)!)
#include <iostream>
using namespace std;
int jiecheng(int n)
{int sum=1;
if(n<=0)
return 0;
for(int i=1;i<=n;i++)
{
sum*=i;
}
return sum;
}
int main()
{int n,m,Cmn;
cin>>n>>m;
Cmn=jiecheng(m)/(jiecheng(n)*jiecheng(m-n));
cout<<Cmn;
return 0;
}
注意输入时n 和m之间有空格啊。