去掉最大值和最小值C
时间: 2025-03-26 16:20:42 浏览: 57
### C语言实现去除数组的最大值和最小值
在C语言中,可以通过遍历数组来找到最大值和最小值,并计算剩余元素的平均值。以下是具体的方法:
#### 方法概述
为了实现这一功能,程序会先初始化两个变量用于存储最大值和最小值。通过一次完整的数组遍历来确定这两个极端值的位置。随后再次遍历数组,在跳过这些位置的同时累加其他数值并统计有效项的数量,最终得出不包含极值情况下的均值。
#### 示例代码
下面是一个简单的例子展示如何去掉一个整型数组中的最大值和最小值[^1]:
```c
#include <stdio.h>
int main() {
int a[] = {1, 2, 3, 4, 5}; // 定义一个含有五个元素的一维数组
int n = sizeof(a)/sizeof(*a); // 计算实际长度n=5
if (n <= 2){
printf("Array too small to remove max and min.\n");
return 1;
}
int sum = 0;
float avg;
int iMaxIndex = 0;
int iMinIndex = 0;
for(int i = 1 ;i<n;i++){
if(a[i]>a[iMaxIndex]) iMaxIndex=i;
if(a[i]<a[iMinIndex]) iMinIndex=i;
}
for(int j = 0;j<n;j++) {
if(j != iMaxIndex && j!= iMinIndex) {
sum += a[j];
}
}
avg=(float)(sum)/(n-2);
printf("Average after removing max and min is %f\n",avg);
return 0;
}
```
此段代码首先检查了数组是否有足够的数量来进行操作(即至少三个不同的数),如果少于等于两个则直接给出提示退出。之后利用两次`for`循环分别找出了最大值与最小值所在索引以及除去了这两者后的总合,进而得到所需的平均分[^2]。
需要注意的是,在处理数组时要特别小心越界访问的问题,比如上述提到的例子中虽然声明了一个具有七个成员的空间 `a[7]` ,但在使用过程中只填充到了第六位(`a[6]`),因此第七个位置实际上是未定义的行为[^3]。
阅读全文
相关推荐


















