编写计算组合数的C语言程序。要求输入数据要有容错功能。 **输入格式要求:"%d,%d" 提示信息:"Input m,k (m>=k>0):" **输出格式要求:"p = %.0f\n"
时间: 2023-12-26 07:03:17 浏览: 125
C语言经典程序100题(完整版).pdf
好的,以下是C语言的程序代码:
```c
#include <stdio.h>
int main() {
int m, k;
double p;
while (1) {
printf("Input m,k (m>=k>0): ");
if (scanf("%d,%d", &m, &k) != 2 || m < k || k <= 0) {
printf("Invalid input, please try again.\n");
scanf("%*[^\n]"); // 清除缓冲区中的非数字字符
} else {
break;
}
}
p = 1;
for (int i = 1; i <= k; i++) {
p *= (double)(m - k + i) / i;
}
printf("p = %.0f\n", p);
return 0;
}
```
程序首先使用 `while` 循环来要求用户输入符合要求的数据,如果输入不合法则提示用户重新输入。在输入不符合要求时,程序使用 `scanf()` 函数读取并清除缓冲区中的非数字字符,以避免死循环。
程序计算组合数的方法是通过循环依次相乘,每次相乘的因子为 `(m-k+i)/i`。最后输出结果,使用了 C语言中的格式化输出函数 `printf()`。
希望这个程序能够满足您的需求。
阅读全文