废话不多说,直接上代码,涉及到的排序算法可查看另一篇博客三种常见的排序算法中的冒泡排序。
代码实现
#include <stdio.h>
int main()
{
//定义一个无序数组,后续测试可自行更改数据或长度
int pNum[10] = { 23, 88, 57, 34, 56, 57, 45, 46, 57, 59 };
//(1)先对数组进行排序,这里使用一个简单的冒泡排序
for (int nIndex = 0; nIndex < (sizeof(pNum) / sizeof(pNum[0])); ++nIndex)
{
for (int nIdx = 0; nIdx < (sizeof(pNum) / sizeof(pNum[0] - 1 - nIndex)); ++nIdx)
{
if (pNum[nIdx] > pNum[nIdx + 1])
{
int nNumber = pNum[nIdx];
pNum[nIdx] = pNum[nIdx + 1];
pNum[nIdx + 1] = nNumber;
}
}
}
//(2)遍历数组,去掉第一个和最后,求和
//因为去掉第一个和最后一个,所以从下表为1开始遍历到数组长度 - 1结束
int nCount = 0;
for (int nIndex = 1; nIndex < (sizeof(pNum) / sizeof(pNum[0] - 1)); ++nIndex)
{
//求和
nCount += pNum[nIndex];
}
//(3)计算平均值
printf("该数组去掉最大值和最小值之后的平均值为:%d", nCount / (sizeof(pNum) / sizeof(pNum[0]) - 2));
return 0;
}