求组合数。编程计算: C(m,k)=m!k!(m−k)! 要求使用如下函数原型编程计算某数的阶乘值。 /* 函数功能:用迭代法计算无符号整型变量n的阶乘*/ unsigned long Fact(unsigned int n); 要求对输入数据有容错功能,输入负数或者输入的m值小于k值时能够让用户重新输入,直到输入正确为止。 **输入格式要求:"%d,%d" 提示信息:"Input m,k (m>=k>0):" **输出格式要求:"The combination is %ld\n" 注1:如果题目中的公式显示不正常,则重新加载(刷新)一下页面即可显示正确 注2:不允许使用goto语句
时间: 2024-03-18 18:38:55 浏览: 115
计算组合数,用C语言编程
5星 · 资源好评率100%
好的,以下是代码实现:
```c
#include <stdio.h>
unsigned long Fact(unsigned int n)
{
if (n == 0)
return 1;
unsigned long result = 1;
for (unsigned int i = 1; i <= n; i++)
{
result *= i;
}
return result;
}
int main()
{
int m, k;
while (1)
{
printf("Input m,k (m>=k>0):");
scanf("%d,%d", &m, &k);
if (m >= k && k > 0)
break;
}
unsigned long result = Fact(m) / (Fact(k) * Fact(m - k));
printf("The combination is %ld\n", result);
return 0;
}
```
代码思路如下:
1. 定义 `Fact()` 函数,用于计算阶乘值。
2. 在 `main()` 函数中,使用循环和条件判断容错,只有当输入的 `m` 大于等于 `k` 且 `k` 大于 0 时才退出循环。
3. 使用公式计算组合数,并输出结果。
阅读全文