『壹』 編寫求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之間有空格啊。