- 问题描述:
在评委打分的比赛中,通常采取去掉一个最高分和最低分,再求平均分的做法,主要是为了公平,公正和公开的原则,防止有人买通评委,有特别的高分出现,另外,也可以防止因为评委个人原因,对选手有“低见”给特别低的分。去掉最高分最低分能够求出较为准确的平均分。请编写程序实现上述计分过程
- 要求实现函数:
int score_calc(int n, int score[])
【输入】 int n,评委人数n(n>=3)
int score[],每个评委的打分(百分制)
【输出】 无
【返回】 选手最终得分(取整)
注:
取整和四舍五入不同,取整只保留数值的整数部分,小数部分丢弃。比如7.3和7.6,取整后都为7
- 示例
输入:int n = 5;int score[] = {75, 80, 75, 70, 80}
输出:无
返回:76
#include <iostream>
using namespace std;
int score_calc(int n,int score[])
{
int temp;
for (int i=0;i<n-1;i++)
{
for (int j=0;j<n-i-1;j++)
{
if (score[j]>score[j+1])
{
temp=score[j];
score[j]=score[j+1];
score[j+1]=temp;
}
}
}
int temp1=0;
for (int k=1;k<n-1;k++)
{
temp1+=score[k];
}
temp1/=n-2;
return temp1;
}
int main()
{
int n=5;
int score[]={75,80,75,70,80};
int c=score_calc(n,score);
cout<<c<<endl;
return 0;
}
测试成功
答题思路:
1 对输入数组进行冒泡排序,从小道大排起
2 取整数,相当于整除操作
3 输出即可