洛谷P5738 【深基7.例4】歌唱比赛

请同学们在看完重点知识之后先自己思考再看代码,建议先自己尝试,不行再看参考代码

基础知识1
1.函数的基本结构:
函数类型 函数名(参数列表){
函数主体,函数在return语句终止,void类型的函数可以不return,也可以写"return ;"这么一句话
}

2.函数的调用:
函数名(参数)进行使用,参数和参数列表对应
基础知识2 ``` sort函数: sort函数能将一个数组进行排序,他有两个参数,一个表示排序位置的开头,一个人表示排序位置的结尾的后一个字符 如果我要将a[1]到a[n]这1到n个数进行排序,可以写成这种形式 sort(a + 1, a + 1 + n) 其中起始位置是a[1]结尾位置的后一个位置是a[n+1],因此写成(a+1,a+1+n) ```
程序编写小技巧
循环比较取最大值:
可以使用max函数,max(x,y)会返回x和y中较大的数
max_val = max(max_val, new_val)
这段会使得max_val不断和new_val进行比较
如果new_val大于max_val,则max_val = new_val
否则max_val不变
初始可以把max_val设置成一个比较小的值
代码展示
#include<bits/stdc++.h>
using namespace std;
//写一个去掉最大值去掉最小值取平均数的函数
//函数类型:double 函数名:get_val 参数列表(int a[], int n)
double get_val(int a[], int n){
    //先对a数组进行排序,方便去掉最大值和去掉最小值
    sort(a + 1, a + 1 + n);
    double cnt = 0;//cnt记录分数和
    //遍历2到n-1,相当于去掉了最大值和最小值
    for(int i = 2; i <= n - 1; ++i) {
        cnt += a[i];
    }
    cnt /= (n-2); //除以总个数-2
    return cnt; //返回平均分数
}
int main()
{
    int n,m; scanf("%d%d",&n,&m);
    int a[30]; //a数组是实时存储当前分数的
    double ans = 0;
    for(int i = 1; i <= n; ++i){
        for(int j = 1; j <= m; ++j){
            scanf("%d",&a[j]); //读入当前这个人的分数
        }
        //使用小技巧取最大值
        ans = max(ans, get_val(a, m));
    }
    printf("%.2lf\n",ans);
    return 0;
}

本文作者:a_night

本文链接:https://www.cnblogs.com/a-night/p/16216764.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   a_night  阅读(249)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起