(语言: C)编写计算组合数的程序。要求输入数据要有容错功能。 **输入格式要求:"%d,%d" 提示信息:"Input m,k (m>=k>0):" **输出格式要求:"p = %.0f\n" 程序
时间: 2025-02-04 17:28:01 浏览: 51
在C语言中,计算组合数(也称为二项式系数)可以使用著名的公式C(n, k) = n! / [k!(n-k)!],其中`n!`表示n的阶乘。为了实现这个功能,并添加错误处理,你可以创建一个名为`compute_combination`的函数,如下所示:
```c
#include <stdio.h>
#include <math.h>
// 计算阶乘
unsigned long long factorial(int num) {
if (num == 0 || num == 1)
return 1;
else
return num * factorial(num - 1);
}
// 计算组合数
double compute_combination(int n, int k) {
if (k > n || n < 0 || k < 0)
printf("Error: n (%d) must be greater than or equal to k (%d), both should be non-negative.\n", n, k);
else
return (double)(factorial(n)) / (factorial(k) * factorial(n - k));
}
int main() {
char input[50];
double result;
// 输入提示
printf("Input m,k (m>=k>0):\n");
fgets(input, sizeof(input), stdin);
// 拆分输入并转换为整数
char* delimiter = ",";
sscanf(input, "%s%s", input, delimiter);
int m = atoi(input); // m
int k = atoi(delimiter + 1); // k
// 计算组合数
result = compute_combination(m, k);
// 输出结果
printf("p = %.0f\n", result);
return 0;
}
```
在这个程序中,我们首先检查输入的合法性(即`k`是否小于`n`,以及两者是否都是非负数),如果不符合条件则显示错误消息。然后,我们计算组合数并按照给定的格式输出结果。
阅读全文
相关推荐


















