请用C语言完成以下程序:要求使用如下函数原型编程计算某数的阶乘值。 /* 函数功能:用迭代法计算无符号整型变量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语句
时间: 2023-06-16 11:07:20 浏览: 123
用c 语言计算数值的阶乘,
以下是程序实现:
```c
#include <stdio.h>
unsigned long Fact(unsigned int n);
int main() {
int m, k;
do {
printf("Input m,k (m>=k>0): ");
scanf("%d,%d", &m, &k);
} while (m < k || k <= 0);
unsigned long combination = Fact(m) / (Fact(k) * Fact(m - k));
printf("The combination is %ld\n", combination);
return 0;
}
unsigned long Fact(unsigned int n) {
unsigned long result = 1;
for (unsigned int i = 2; i <= n; i++) {
result *= i;
}
return result;
}
```
程序流程如下:
1. 首先定义了计算阶乘的函数 `Fact`,使用循环计算阶乘的值,并返回结果。
2. 在 `main` 函数中,使用 `do-while` 循环来进行输入容错处理,如果输入的 `m` 小于 `k` 或 `k` 小于等于 0,则要求用户重新输入。
3. 计算组合数并输出结果。
注意事项:
1. 在函数 `Fact` 的返回值类型中使用 `unsigned long`,避免计算过程中出现负数结果。
2. 在输入时使用 `,` 分隔符,注意格式要求。
3. 在 `do-while` 循环中使用逻辑运算符 `||` 来进行条件判断,避免使用 `goto` 语句。
阅读全文