用C语言写编写计算组合数的程序。要求输入数据要有容错功能。 **输入格式要求:"%d,%d" 提示信息:"Input m,k (m>=k>0):" **输出格式要求:"p = %.0f\n"
时间: 2024-05-16 11:15:59 浏览: 86
以下是用C语言编写计算组合数的程序,包括输入数据的容错功能:
```c
#include <stdio.h>
long long combination(int m, int k);
int main() {
int m, k;
printf("Input m,k (m>=k>0): ");
while(scanf("%d,%d", &m, &k) != 2 || m < k || k <= 0) {
printf("Invalid input! Please try again.\n");
while(getchar() != '\n'); // 清空输入缓冲区
printf("Input m,k (m>=k>0): ");
}
printf("p = %.0f\n", (double)combination(m, k));
return 0;
}
// 计算组合数
long long combination(int m, int k) {
long long p = 1;
for(int i = 1; i <= k; i++) {
p *= m - i + 1;
p /= i;
}
return p;
}
```
其中,`combination()` 函数实现了计算组合数的算法,主函数中则实现了输入数据的容错功能。在输入数据时,判断用户输入的数据是否满足要求,若不满足要求则提示用户重新输入。在输入数据时,使用 `scanf()` 函数并检查返回值,如果返回值不为 2 表示输入错误,此时需要清空输入缓冲区中的数据(通过多次调用 `getchar()` 函数实现)。最后,调用 `combination()` 函数计算组合数并输出结果。
阅读全文