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];//返回找到的最小值
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值