7-2 求组合数 (20 分)

本题要求编写程序,根据公式

		n					​n!
	C			=		-----------
		​m				  ​m!(n−m)!

​​ 算出从n个不同元素中取出m个元素(m≤n)的组合数。

建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。

输入格式:

输入在一行中给出两个正整数m和n(m≤n),以空格分隔。

输出格式:

按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。

输入样例:

2 7

输出样例:

result = 21

不知道这样写为什么不行

#include 
int fact(int n);
int main()
{
	int m,n,x,x1,n1,m1;
	double s;
	scanf("%d %d",&m,&n);
	x=n-m;
	n1=fact(n);
//	printf("%lf\n",n1);
	m1=fact(m);
//	printf("%lf\n",m1);
	x1=fact(x);
//	printf("%lf\n",x1);
	s=n1/m1;
	s=s/x1;
	printf("result = %.0lf",s);
return 0;
}

int fact(int n)
{
	int s=1,i;
	for(i=1;i<=n;i++)
	{
		s*=i;
	}
//	printf("%d ",s);
	return s;
}

用递归就可以了

#include 
double fa(double n);
int main()
{
    double n, a, m; 
    scanf("%lf%lf",&m,&n);
    a=fa(n)/(fa(n-m)*fa(m));
    printf("result = %.0lf",a);
    return 0;
}

double fa(double n)
{
    double i, fact=1;
    
    for(i=1;i<=n;i++)
        fact=fact*i;

    return fact;
}   

你可能感兴趣的:(C语言,#,大一上学期基础算法题)