用C语言求排列组合数

用C语言求排列组合数

#include <stdio.h>
#include <stdlib.h>

double f(int a, int b);//因为排列数可大可小,所以返回值类型应为double//

int main()
{
	int a,b;
	printf("提醒下标比上标大\n");
	printf("请输入排列组合的上标及下标:");
	scanf_s("%d %d", &a, &b);
	printf("排列组合数=%lf\n", f(a, b));
	system("pause");
	return 0;
	
	
}

double f(int a, int b)
{
	double t[3];
	int i;
	for (i = 0; i <= 2; i++)//每个阶乘都需赋值,要不然自动去负值//
		t[i] = 1;
	for (i = 1; i<=a; i++)
		t[0] *= i;
	for (i = 1; i <= b; i++)
		t[1] *= i;
	for (i = 1; i <= (b-a); i++)
		t[2] *= i;
	return t[1]/t[2]/t[0];
}

猜你喜欢

转载自blog.csdn.net/smilezyf/article/details/90722312