C语言求数组中去掉最大值和最小值之后的平均值
时间: 2024-12-16 16:22:16 浏览: 4
从输入的一批正整数中求出最大值、最小值和平均值,输入0结束数据的输入
在C语言中,如果你想计算一个数组中去掉最大值和最小值后的平均值,你需要先找出这两个极端值,然后对剩余的数值求平均。以下是一个简单的步骤示例:
```c
#include <stdio.h>
double averageWithoutMinMax(int arr[], int size) {
if (size <= 1) {
// 数组至少要有两个元素才能计算平均
return -1.0; // 或者抛出错误,表示无法计算
}
int min_index = 0, max_index = 0;
double sum = 0.0, temp;
// 寻找最小值和最大值的索引
for (int i = 1; i < size; i++) {
if (arr[i] < arr[min_index]) {
min_index = i;
}
if (arr[i] > arr[max_index]) {
max_index = i;
}
}
// 去掉最小值和最大值
temp = arr[min_index];
arr[min_index] = arr[max_index];
arr[max_index] = temp;
// 计算剩余值的总和
for (int i = 0; i < size; i++) {
if (arr[i] != arr[min_index] && arr[i] != arr[max_index]) {
sum += arr[i];
}
}
// 返回去掉两个极端值后的平均值
return sum / (size - 2);
}
int main() {
int array[] = {5, 1, 9, 2, 8};
int size = sizeof(array) / sizeof(array[0]);
double result = averageWithoutMinMax(array, size);
if (result != -1.0) {
printf("去掉最大值和最小值后的平均值是: %.2f\n", result);
} else {
printf("无法计算,数组太小。\n");
}
return 0;
}
```
在这个示例中,我们首先找到数组中的最小值和最大值,然后交换这两个值的位置,接着遍历数组计算剩下的元素之和,最后除以剩余元素的数量得到平均值。
阅读全文