编写C语言程序,输入20个数并存入数组,讲下标值为偶数的元素按降序排列,输出该数组
时间: 2024-02-24 17:58:22 浏览: 70
好的,以下是实现该需求的 C 语言程序:
```c
#include <stdio.h>
void selection_sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int max_idx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] > arr[max_idx]) {
max_idx = j;
}
}
int temp = arr[i];
arr[i] = arr[max_idx];
arr[max_idx] = temp;
}
}
int main() {
int arr[20];
printf("请输入20个整数:\n");
for (int i = 0; i < 20; i++) {
scanf("%d", &arr[i]);
}
// 选出下标为偶数的元素并排序
int even_arr[10];
int even_count = 0;
for (int i = 0; i < 20; i += 2) {
even_arr[even_count++] = arr[i];
}
selection_sort(even_arr, even_count);
// 将排序后的偶数元素放回原数组
int even_idx = 0;
for (int i = 0; i < 20; i += 2) {
arr[i] = even_arr[even_idx++];
}
// 输出数组
printf("下标为偶数的元素按降序排列后的数组为:\n");
for (int i = 0; i < 20; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
程序的基本思路是:
1. 输入 20 个整数并存入数组 `arr` 中。
2. 选出下标为偶数的元素存入新数组 `even_arr` 中。
3. 对新数组 `even_arr` 进行降序排序。
4. 将排序后的偶数元素放回原数组 `arr` 中。
5. 输出原数组 `arr`。
可以看到,程序的关键是排序算法。我这里采用了选择排序,时间复杂度为 $O(n^2)$,不过因为这里只需要对 10 个元素排序,所以运行时间还是很快的。
阅读全文