練習2-18 求組合數 (15 分)
本題要求編寫程序,根據公式Cnm=m!(n−m)!n!算出從n個不同元素中取出m個元素(m≤n)的組合數。
建議定義和調用函數fact(n)
計算n!
,其中n
的類型是int
,函數類型是double
。
輸入格式:
輸入在一行中給出兩個正整數m和n(m≤n),以空格分隔。
輸出格式:
按照格式“result = 組合數計算結果”輸出。題目保證結果在double
類型范圍內。
輸入樣例:
2 7
輸出樣例:
result = 21
思路:利用階乘函數表示組合數。
代碼如下:
#include <stdio.h> double factorial(double n); int main() { double n, a, m; scanf("%lf%lf",&m,&n); a=factorial(n)/(factorial(n-m)*factorial(m)); printf("result = %.0lf",a); return 0; } double factorial(double n) { double i, fact=1; for(i=1;i<=n;i++) fact=fact*i; return fact; }