用c语言 题目描述 编写程序:输入两个正整数 m,n(m>n),计算从 m 个元素中任取 n 个元素的组合数。计 算公式为: 函数接口定义: long int factorial ( int k ); 其中 k 是用户传入的参数。 k 的取值范围为[1,10]。函数须返回 k 的阶乘。 裁判测试程序样例: #include <stdio.h> long int factorial ( int k ); int main() { int n,m; long c; scanf("%d%d",&m,&n); if(m<n) printf("Data Error!"); else { c=factorial(m)/(factorial(n)*factorial(m-n)); } printf("%ld",c); return 0; } 输入样例: 5 2 输出样例: 10
时间: 2024-03-13 09:42:55 浏览: 210
编写程序,输入整数 n,计算并输出 n 的阶乘
下面是计算组合数的程序代码:
```c
#include <stdio.h>
long int factorial(int k);
int main() {
int n, m;
long c;
scanf("%d%d", &m, &n);
if (m < n) {
printf("Data Error!");
} else {
c = factorial(m) / (factorial(n) * factorial(m - n));
printf("%ld", c);
}
return 0;
}
long int factorial(int k) {
int i;
long int f = 1;
for (i = 1; i <= k; i++) {
f *= i;
}
return f;
}
```
程序的实现过程是:首先读入两个正整数 m 和 n,判断 m 是否大于等于 n,如果不是,则输出“Data Error!”;否则,根据组合数的计算公式,计算 m 个元素中任取 n 个元素的组合数,并输出结果。
计算 k 的阶乘可以使用一个循环实现,从 1 到 k 依次累乘即可。函数 factorial 的代码如下:
```c
long int factorial(int k) {
int i;
long int f = 1;
for (i = 1; i <= k; i++) {
f *= i;
}
return f;
}
```
完整的代码如下:
```c
#include <stdio.h>
long int factorial(int k);
int main() {
int n, m;
long c;
scanf("%d%d", &m, &n);
if (m < n) {
printf("Data Error!");
} else {
c = factorial(m) / (factorial(n) * factorial(m - n));
printf("%ld", c);
}
return 0;
}
long int factorial(int k) {
int i;
long int f = 1;
for (i = 1; i <= k; i++) {
f *= i;
}
return f;
}
```
阅读全文