1. 程式人生 > >hdu 2014 青年歌手大獎賽_評委會打分(陣列,呼叫函式,c語言)

hdu 2014 青年歌手大獎賽_評委會打分(陣列,呼叫函式,c語言)

hdu 2014 青年歌手大獎賽_評委會打分

點選做題網站連結

題目描述

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

Problem Description
青年歌手大獎賽中,評委會給參賽選手打分。選手得分規則為去掉一個最高分和一個最低分,然後計算平均得分,請程式設計輸出某選手的得分。

Input
輸入資料有多組,每組佔一行,每行的第一個數是n(2<n<=100),表示評委的人數,然後是n個評委的打分。

Output
對於每組輸入資料,輸出選手的得分,結果保留2位小數,每組輸出佔一行。

Sample Input
3 99 98 97
4 100 99 98 97

Sample Output
98.00
98.50

題目難點

1. 使用陣列
2. 呼叫函式

問題解答

#include <stdio.h>
int findMax(int[],int);//宣告找到最大值的函式
int findMin(int[],int);//宣告找到最小值的函式

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        if(n<2 || n>100) continue;//如果n<2或n>100,則下面步驟全部跳過,再次輸入n
int a[101],sum=0,Max,Min; double ave;//平均值是double型的 for(int i=0;i<n;++i) { scanf("%d",&a[i]);//依次輸入評分 sum+=a[i];//求所有分數的和(包括最高分和最低分) } Max=findMax(a,n);//得到最大評分 Min=findMin(a,n);//得到最小評分 ave=double(sum-Max-Min)/(n-2);//強行進行資料型別轉化求平均分
printf("%.2lf\n",ave);//注意精度 } return 0; } int findMax(int a[],int n) { int t=0;//初始化最大值的下標為0 for(int i=0;i<n;++i) { if(a[i]>a[t]) t=i;//如果遍歷數列,找到比假設最大值更大的數字,則更改下標為新找到的最大值的下標 } return a[t];//返回找到的最大值 } int findMin(int a[],int n) { int t=0;//初始化最小值的下標為0 for(int i=0;i<n;++i) { if(a[i]<a[t]) t=i;//如果遍歷數列,找到比假設最小值更小的數字,則更改下標為新找到的最小值的下標 } return a[t];//返回找到的最小值 }