这道题不得不引入数组了:
题目中要求,去掉一个最高分,去掉一个最低分,由于每个输入的数据都具有未知性,所以必须所有数据输入完毕,才能够判断出最大值最小值,所以就不得不用数组解答。
#include <stdio.h>
#define f(i,r,n) for(int i = r;i< n;i++)
int main()
{
//初始化
int n;
float sum;
float ave;
//主体
while(scanf("%d",&n))
{
sum = 0;
int arr[n];
f(i,0,n)
{
scanf("%d",&arr[i]); //输入数组每一项的值
}
f(j,0,n)
{
f(i,0,n)
{
if(arr[i-1]>arr[i])
{
int u = arr[i-1];
arr[i-1] = arr[i];
arr[i] = u;
}
}
} //对数组的值按照大小排序
arr[0] = 0; //去掉最低分
arr[n-1] = 0; //去掉最高分
f(i,0,n)
{
sum += arr[i]; //求和
}
ave = sum/(n-2); //计算平均值
printf("%.2f\n",ave);
}
return 0;
}
总结下数组排序的方法: