编个C语言程序 从8个数中取出5个
时间: 2023-08-31 17:40:18 浏览: 65
### 回答1:
我可以提供一个可以实现这个功能的C语言程序:#include<stdio.h>int main()
{
int nums[8] = {1, 2, 3, 4, 5, 6, 7, 8};
int result[5];
int i, j, k;
for (i = 0; i < 5; i++) {
result[i] = nums[i];
}
for (j = 5; j < 8; j++) {
for (k = 0; k < 5; k++) {
if (nums[j] > result[k]) {
result[k] = nums[j];
break;
}
}
}
for (i = 0; i < 5; i++) {
printf("%d ", result[i]);
}
printf("\n");
return 0;
}
### 回答2:
以下是一个使用C语言编写的程序,用于从8个数中选择任意5个数进行输出:
```c
#include <stdio.h>
void print_combinations(int arr[], int n, int r, int index, int data[], int i) {
// 结束条件:当已选择的数目等于需要选择的数目时,输出组合
if (index == r) {
for (int j = 0; j < r; j++) {
printf("%d ", data[j]);
}
printf("\n");
return;
}
// 当没有足够的剩余数字可供选择时,直接返回
if (i >= n) {
return;
}
// 先选择当前数字,然后再在剩余的数字中选择下一个数字
data[index] = arr[i];
print_combinations(arr, n, r, index+1, data, i+1);
// 不选择当前数字,直接在剩余的数字中选择下一个数字
print_combinations(arr, n, r, index, data, i+1);
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
int n = sizeof(arr) / sizeof(arr[0]);
int r = 5;
int data[r];
print_combinations(arr, n, r, 0, data, 0);
return 0;
}
```
这个程序通过递归的方式生成组合,首先选择当前数字,然后在剩余的数字中选择下一个数字;然后不选择当前数字,直接在剩余的数字中选择下一个数字。最终,会输出所有的5个数字的组合。
以上程序可以输出如下结果:
```
1 2 3 4 5
1 2 3 4 6
1 2 3 4 7
1 2 3 4 8
1 2 3 5 6
1 2 3 5 7
...
7 8
```
### 回答3:
编写C语言程序实现从8个数中取出5个的问题,可以使用递归的方法来解决。
```c
#include <stdio.h>
void combination(int arr[], int data[], int start, int end, int index, int r) {
// 如果当前组合已经有r个数字了,打印并返回
if (index == r) {
for (int i = 0; i < r; i++) {
printf("%d ", data[i]);
}
printf("\n");
return;
}
// 从当前数组的第start位置开始,将剩下的数字组合
for (int i = start; i <= end && end - i >= r - index; i++) {
data[index] = arr[i];
combination(arr, data, i + 1, end, index + 1, r);
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
int n = sizeof(arr) / sizeof(arr[0]);
int r = 5;
int data[r];
combination(arr, data, 0, n - 1, 0, r);
return 0;
}
```
以上程序通过递归方式实现了从8个数字中选取5个数字的所有组合,并将结果打印出来。该程序先定义了一个递归函数 `combination`,该函数根据参数确定当前已经选取的数字数量和下一步要选取的数字位置。在主函数中,声明了一个大小为5的数组来存储每一次的组合,并调用递归函数进行组合的生成与打印。运行程序,会输出从8个数字中选取5个数字的所有组合。