用C语言编写程序,输入20个数并存入数组,将下标值为偶数的元素按降序排列,输出该数组。
时间: 2024-12-29 16:34:50 浏览: 16
在C语言中,你可以按照以下步骤编写程序来满足这个需求:
1. 首先,你需要创建一个足够大的数组来存储20个整数,并提示用户输入这20个数。
```c
#include <stdio.h>
#define SIZE 20
int main() {
int arr[SIZE];
```
2. 接着,通过循环从用户那里获取输入并存储到数组中。
```c
for (int i = 0; i < SIZE; i++) {
printf("请输入第 %d 个数:", i + 1);
scanf("%d", &arr[i]);
}
```
3. 对于下标为偶数的元素,使用另一个循环,同时检查是否为偶数并进行降序排序。这里可以使用标准库函数`qsort()`来简化过程,但是要注意需要自定义比较函数以处理降序。
```c
// 创建一个函数用于比较数组元素的降序
int compare(const void* a, const void* b) {
return (*(const int*)b - *(const int*)a); // 返回负数表示第一个大于第二个
}
// 将偶数索引的元素复制到临时数组,然后降序排序
int temp[SIZE / 2];
for (int i = 0; i < SIZE && i % 2 == 0; i++) {
temp[i / 2] = arr[i];
}
qsort(temp, SIZE / 2, sizeof(int), compare);
// 将排序后的元素放回原数组对应位置
for (int i = 0, j = 0; i < SIZE && j < SIZE / 2; i += 2, j++) {
arr[i] = temp[j];
}
```
4. 最后,打印出已排序的数组。
```c
printf("排序后的数组:");
for (int i = 0; i < SIZE; i++) {
if (i % 2 == 0) {
printf("%d ", arr[i]); // 只显示偶数下标的元素
} else {
printf("<未排序> "); // 偶数下标以外的元素未排序
}
}
printf("\n");
return 0;
}
```
阅读全文