c语言:编程实现由主函数输入m,n,按下述公式计算C n m的值。 C n m=n!/(m!*(n-m)!)
时间: 2024-11-04 11:15:32 浏览: 3
在C语言中,你可以使用递归的方式来实现计算组合数(C(n, m))的算法,因为组合数涉及到阶乘的计算,这是一个常见的数学运算。下面是一个简单的程序示例:
```c
#include <stdio.h>
// 计算阶乘
unsigned long long factorial(int num) {
if (num == 0 || num == 1)
return 1;
else
return num * factorial(num - 1);
}
// 计算组合数 C(n, m)
unsigned long long combination(int n, int m) {
if (m > n || m < 0 || n < 0) {
printf("Invalid input: m should be between 0 and n.\n");
return 0;
}
return factorial(n) / (factorial(m) * factorial(n - m));
}
int main() {
int m, n;
// 输入m和n
printf("Enter the values of n and m: ");
scanf("%d %d", &n, &m);
// 计算并输出结果
unsigned long long result = combination(n, m);
printf("C(%d, %d) = %llu\n", n, m, result);
return 0;
}
```
在这个程序中,`factorial()` 函数用于计算阶乘,然后在 `combination()` 函数中利用这个阶乘功能来计算组合数。注意,当输入的 m 或者 (n-m) 超出范围时,会打印错误消息并返回0。
阅读全文