洛谷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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步