编写计算组合数的程序。要求输入数据要有容错功能。 **输入格式要求:"%d,%d" 提示信息:"Input m,k (m>=k>0):" **输出格式要求:"p = %.0f\n" 程序运行示例1如下: Input m,k (m>=k>0):3,2 p = 3 用c语言写
时间: 2024-03-25 19:42:06 浏览: 107
好的,以下是计算组合数的程序实现,包含输入数据的容错处理:
```c
#include <stdio.h>
long long factorial(int n) {
long long result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
double combination(int m, int k) {
if (m < k || m <= 0 || k <= 0) {
return -1; // 输入数据错误,返回负数表示错误
}
return (double)factorial(m) / (factorial(k) * factorial(m - k));
}
int main() {
int m, k;
printf("Input m,k (m>=k>0):");
if (scanf("%d,%d", &m, &k) != 2) {
printf("Invalid input!\n");
return 1;
}
double p = combination(m, k);
if (p < 0) {
printf("Invalid input!\n");
return 1;
}
printf("p = %.0f\n", p);
return 0;
}
```
在 `combination` 函数中,首先对输入数据进行判断,如果数据不合法,就返回负数表示错误。否则,按照组合数的公式计算结果,并返回。在 `main` 函数中,先使用 `scanf` 函数读入输入数据,如果读入的数据不是两个整数,就认为输入数据无效,输出错误信息并退出程序。如果读入的数据合法,则调用 `combination` 函数计算结果,如果计算结果为负数,也认为输入数据无效,输出错误信息并退出程序。否则,输出计算结果。
阅读全文