根据下列公式可以计算出从n个不同的元素中取出m个元素(m<=n)的组合数。编写程序,输入2个正整数m和n(m<=n),计算并输出组合数。要求定义和调用函数fact(n)计算n!,函数类型为double。c语言
时间: 2024-11-20 12:34:55 浏览: 31
在 C 语言中,我们可以使用以下公式计算组合数(从 n 个不同元素中取出 m 个元素的数目,记作 C(n, m) 或者 "n choose m"):
C(n, m) = n! / [m!(n - m)!]
其中,n! 表示 n 的阶乘,即所有小于等于 n 的正整数的乘积。
首先,我们需要编写一个函数 fact(n) 来计算阶乘,这里我们将它定义为 double 类型以支持较大的数值。
```c
#include <stdio.h>
#include <math.h> // 引入 math.h 以使用 pow 函数
// 计算阶乘的函数
double fact(double n) {
if (n <= 1) {
return 1; // 0! 和 1! 都等于 1
} else {
return n * fact(n - 1); // 递归计算阶乘
}
}
// 计算组合数的函数
double combination(double n, double m) {
return fact(n) / (fact(m) * fact(n - m)); // 根据公式计算组合数
}
int main() {
double m, n;
printf("请输入两个正整数 m 和 n (m <= n): ");
scanf("%lf%lf", &m, &n);
// 检查 m 是否小于等于 n
if (m > n) {
printf("Error: m 必须小于等于 n.\n");
return 1;
}
// 计算并输出组合数
double result = combination(n, m);
printf("C(%lf, %lf) = %.8f\n", n, m, result);
return 0;
}
```
这段程序会要求用户输入 m 和 n,并检查 m 是否小于等于 n。如果满足条件,就会调用 combination 函数计算组合数并输出结果。
阅读全文