一:题目描述
马上要举办新生程序设计竞赛了,与以往不同的是,本次比赛以班为单位,为了全面衡量一个班级的整体水平,要求从一个班的m位同学中任选k位同学代表本班参加比赛,问有多少种组合方案。在计算组合方案时会用到计算阶乘的运算,要求编写函数fact(),实现求一个数的阶乘功能,函数原型如下。
int fact(int n);//计算n的阶乘并返回
二:输入
输入两个正整数m,k,k<=m<=12。
三:输出
输出一个整数,即组合方案数。
四:样例输入
5 3
五:样例输出
10
六:代码
提示组合数公式m!/ (k!(m - k)!)
#include<stdio.h>
int fact(int n)
{
int flag = 1;
//求阶乘
int i = 0;
for ( i = 1; i <= n; i++)//求阶乘i从1开始
{
flag = flag* i;
}
return flag;
}
int main()
{
int m = 0;//班里同学数初始化
int k = 0;//要选多少学生
scanf("%d %d", &m, &k);
//m!/ (k!(m - k)!)
int num1 = fact(m);
int num2 = fact(k);
int num3 = fact(m - k);
printf("%d", num1 / (num2 * num3));
return 0;
}