whenever

  • Home

  • Tags21

  • Categories6

  • Archives122

  • About

PAT乙级1077 || 互评成绩计算(详解,C/C++示例,测试点分析)

Posted on 2019-12-29 In PAT

互评成绩计算

题目描述

在浙大的计算机专业课中,经常有互评分组报告这个环节。一个组上台介绍自己的工作,其他组在台下为其表现评分。最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个最高分和一个最低分,剩下的分数取平均分记为 G1;老师给这个组的评分记为 G2。该组得分为 (G1+G2)/2,最后结果四舍五入后保留整数分。本题就要求你写个程序帮助老师计算每个组的互评成绩。

输入格式

输入第一行给出两个正整数 N(> 3)和 M,分别是分组数和满分,均不超过 100。随后 N 行,每行给出该组得到的 N 个分数(均保证为整型范围内的整数),其中第 1 个是老师给出的评分,后面 N−1 个是其他组给的评分。合法的输入应该是 [0,M] 区间内的整数,若不在合法区间内,则该分数须被忽略。题目保证老师的评分都是合法的,并且每个组至少会有 3 个来自同学的合法评分。

输出格式

为每个组输出其最终得分。每个得分占一行。

输入样例

1
2
3
4
5
6
7
6 50
42 49 49 35 38 41
36 51 50 28 -1 30
40 36 41 33 47 49
30 250 -25 27 45 31
48 0 0 50 50 1234
43 41 36 29 42 29

输出样例

1
2
3
4
5
6
42
33
41
31
37
39

问题解决

解题思想

简单题。注意vector的使用,结果要四舍五入为整数,注意处理。

坑点提醒

None

代码示例(C/C++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main() {
int n, m;
cin >> n >> m;
double te; //老师评分
for(int i = 0; i < n; i++) {
vector <double> st; //其他组评分
double sum_st = 0.0, ave_st; //其他组有效评分和
int so; //该组得分
int k = 0; //统计其他组合法评分数
cin >> te;
for(int j = 0; j < n-1; j++) {
double tmp;
cin >> tmp;
if(tmp >= 0 && tmp <= m) {
st.push_back(tmp);
k++;
}
}
sort(st.begin(), st.end()); //升序排序
for(int j = 1; j < k - 1; j++) { //去掉最大值和最小值求和
sum_st += st[j];
}
ave_st = sum_st / (k - 2);
so = (int)((ave_st + te) / 2 + 0.5); //四舍五入得分
cout << so << endl;
}
return 0;
}

题目来源:PAT乙级1077
作者:CHEN, Yue
单位:浙江大学

稀罕作者
Mengzhao Wang WeChat Pay

WeChat Pay

Mengzhao Wang Alipay

Alipay

# C/C++ # PAT # 编程
PAT乙级1076 || Wifi密码(详解,C/C++示例,测试点分析)
PAT乙级1078 || 字符串压缩与解压(详解,C/C++示例,测试点分析)
  • Table of Contents
  • Overview
Mengzhao Wang

Mengzhao Wang

Try? All the way !
122 posts
6 categories
21 tags
  1. 1. 互评成绩计算
    1. 1.1. 题目描述
    2. 1.2. 输入格式
    3. 1.3. 输出格式
    4. 1.4. 输入样例
    5. 1.5. 输出样例
    6. 1.6. 问题解决
      1. 1.6.1. 解题思想
      2. 1.6.2. 坑点提醒
      3. 1.6.3. 代码示例(C/C++)
© 2021 Mengzhao Wang