编写计算组合数的程序。要求输入数据要有容错功能。 **输入格式要求:"%d,%d" 提示信息:"Input m,k (m>=k>0):" **输出格式要求:"p = %.0f\n" 程序运行示例1如下: Input m,k (m>=k>0):3,2 p = 3 程序运行示例2如下: Input m,k (m>=k>0):2,3 Input m,k (m>=k>0):3,3 p = 1 Input m,k (m>=k>0):-2,-4 Input m,k (m>=k>0):4,2 p = 6
时间: 2024-03-25 21:42:08 浏览: 33
计算组合数,用C语言编程
5星 · 资源好评率100%
好的,以下是计算组合数的程序实现,包含输入数据的容错处理:
```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;
while (1) {
printf("Input m,k (m>=k>0):");
if (scanf("%d,%d", &m, &k) != 2) {
printf("Invalid input!\n");
while (getchar() != '\n'); // 清空输入缓冲区
continue;
}
double p = combination(m, k);
if (p < 0) {
printf("Invalid input!\n");
continue;
}
printf("p = %.0f\n", p);
break;
}
return 0;
}
```
与之前的程序相比,主要增加了一个无限循环。在循环中,先输出提示信息并使用 `scanf` 函数读入输入数据,如果读入的数据不是两个整数,就认为输入数据无效,输出错误信息并清空输入缓冲区,然后继续下一轮循环。如果读入的数据合法,则调用 `combination` 函数计算结果,如果计算结果为负数,也认为输入数据无效,输出错误信息,然后继续下一轮循环。如果输入数据和计算结果都合法,则输出计算结果,并退出循环。这样,就可以保证输入数据合法,并且可以容错处理非法输入。
阅读全文