n(n\le 100)n(n≤100) 名同学参加歌唱比赛,并接受 m(m\le 20)m(m≤20) 名评委的评分,评分范围是 0 到 10 分。这名同学的得分就是这些评委给分中去掉一个最高分,去掉一个最低分,剩下 m-2m?2 个评分的平均数。请问得分最高的同学分数是多少?评分保留 2 位小数。
7 6 4 7 2 6 10 7 0 5 0 10 3 10 2 6 8 4 3 6 6 3 6 7 5 8 5 9 3 3 8 1 5 9 9 3 2 0 5 8 0 4 1 10
6.00
1.首先输入学生和评委数量,用for实现。
2.输入每个评委的打分,数组形式存储。
3.用sort 排序 找出最高和最低分 去掉
#include<bits/stdc++.h>//头文件
using namespace std;
int main()
{
int n,m;//定义
double MAX=INT_MIN;//注意首先把最大值设为INT_MIN,注意(在C/C++语言中,不能够直接使用-2147483648来代替最小负数,因为这不是一个数字,而是一个表达式。
cin>>n>>m;//输入学生数量和评委数量
for(int i=1;i<=n;i++)//循环输入学生for循环
{
double s[1000],sum=0;//临时数组记录本组内容
for(int j=1;j<=m;j++)//循环输入评委的for循环
{
cin>>s[j]; //输入每个成绩
sum+=s[j];//每次把成绩累计求和
}
sort(s+1,s+m+1);//调用sort进行排序
sum=sum-s[1]-s[m];//找到最大最小值,减去最大值和最小值
sum/=(m-2);//注意算平均分的时候要减去最大、最小值所以数量是m-2
if(sum>MAX) MAX=sum;//这里比较大小,sum大把sum赋给MAX
}
cout<<fixed<<setprecision(2)<<MAX;//保留两位小数,输出结果
return 0; //结束
}
1.注意sort()的用法,Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!
Sort函数有三个参数:
(1)第一个是要排序的数组的起始地址。
(2)第二个是结束的地址(最后一位要排序的地址)
(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。
2.注意INT_MIN在标准头文件limits.h中定义。
#include<limits.h>
C/C++中常量INT_MAX和INT_MIN分别表示最大、最小整数,头文件是limits.h。
INT_MAX = 2^31-1=2147483647;
INT_MIN= -2^31=-2147483648;
在C/C++语言中,不能够直接使用-2147483648来代替最小负数,因为这不是一个数字,而是一个表达式。表达式的意思是对整数21473648取负,但是2147483648已经溢出了int的上限。
3.保留小数点的写法归纳了三种:
//第一种写法
cout<<setiosflags(ios::fixed)<<setprecision(2);
//第二种写法
cout.setf(ios::fixed);
cout<<setprecision(2);
//第三种写法
cout<<fixed<<setprecision(2);
好好学习,天天向上。
贵在坚持,加油!
原文:https://www.cnblogs.com/limingze/p/14810552.html