组合数是就是从m个不同的元素中取出n个元素所有的组合的个数。组合数的公式是c(m,n)=m!/(n!*(m-n)!)。所以当我们想要计算组合数时,就需要考虑到阶乘的问题,我定义了两个函数fact和conbinenumber,fact函数用来实现阶乘,conbinenumber通过调用fact函数来实现计算组合数。
#include "stdafx.h"
long conbinenumber(int m,int n);
long fact(int a);
int _tmain(int argc, _TCHAR* argv[])
{
int x,y;
scanf_s("%d,%d",&x,&y);
long con=conbinenumber(x,y);
printf("%d\n",con);
}
/*
函数功能:输出组合数
函数名称:conbinenumber
参数:m--用来表示组合数上标
n--用来表示组合数下标
返回值:long
*/
long conbinenumber(int m,int n)
{
long m1=fact(m);
long n1=fact(n);
long l=fact(m-n);
if(m==0||m==1)
return 1;
else
return (m1/(n1*(l)));
}
long fact(int a)
{
if(a==1||a==0)
return 1;
else
return (a*fact(a-1));
}
实验结果如下:
输入两个数据时,记得中间加上逗号,因为代码中输入两个数据时用了scanf("%d,%d",&x,&y)。