2011藍橋杯【初賽試題】歌賽新規則
歌賽新規則
歌手大賽的評分規則一般是去掉一個最高分,去掉一個最低分,剩下的分數求平均。當評委較少的時候,如果我們隻允許去掉一個分數,該如何設計規則呢?
有人提出:應該去掉與其餘的分數平均值相差最遠的那個分數。即“最離群”的分數。
以下的程序用於實現這個功能。其中x存放所有評分,n表示數組中元素的個數。函數返回最“離群”的那個分數值。請補全缺失的代碼。
double score(double x[], int n)
{
int i,j;
double dif = -1;
double bad;
for(i=0; i<n; i++)
{
double sum = 0;
for(j=0; j<n; j++)
{
if(j!=i) sum += x[j];//除了要檢測的那個分數不加外,其他分數計算總和
}
double t = x[i] - sum / (n-1);//看看要檢測的那個分數與剩下的所有的分數的平均值的差距
if(t<0) t = -t;//不要負數
if(t>dif)//如果大於上一次的幾率,更新最大差距
{
dif = t;
bad = x[i];//記錄最壞數
printf("%d, %f\n", i, x[i]);
}
}
return bad;
}
最後更新:2017-04-03 12:55:33