9、 C语言对12个正整数进行排序,然后去掉最大最小值后求平均。(12分)
时间: 2024-12-18 13:37:37 浏览: 3
在C语言中,你可以通过以下几个步骤来实现这个功能:
1. 定义一个数组来存储这12个正整数。
2. 使用标准库函数`qsort()`对数组进行排序。例如,可以先创建一个自定义的比较函数,然后传给`qsort()`。
```c
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
void sort(int arr[], int n) {
qsort(arr, n, sizeof(int), compare);
}
```
3. 排序后,获取并保存数组的最大值和最小值。可以使用指针遍历数组找到它们。
4. 删除最大值和最小值,更新数组长度。
5. 计算剩余元素的平均值。由于已经删除了两个边界值,所以直接将剩下的总和除以剩下元素的数量即可。
下面是一个完整的示例:
```c
#include <stdio.h>
int main() {
int numbers[12];
// 输入12个正整数
for (int i = 0; i < 12; i++) {
scanf("%d", &numbers[i]);
}
// 排序数组
sort(numbers, 12);
// 找到最大值和最小值,并删除它们
int max_index = 0, min_index = 0;
for (int i = 1; i < 10; i++) { // 避免与输入的第一个和最后一个元素混淆
if (numbers[i] > numbers[max_index]) {
max_index = i;
}
if (numbers[i] < numbers[min_index]) {
min_index = i;
}
}
// 更新数组长度并移除这两个元素
size_t new_length = 12 - 2;
memmove(numbers + 2, numbers + 1, new_length * sizeof(int));
// 计算并打印平均值
double average = (double)(numbers[0] + numbers[new_length - 1]) / new_length;
printf("Average of the remaining numbers is: %.2f\n", average);
return 0;
}
阅读全文