L2-015. 互评成绩

学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审,得到k个成绩。系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。

输入格式:

输入第一行给出3个正整数N(3< N <= 104,学生总数)、k(3<= k <= 10,每份作业的评审数)、M(<= 20,需要输出的学生数)。随后N行,每行给出一份作业得到的k个评审成绩(在区间[0, 100]内),其间以空格分隔。

输出格式:

按非递减顺序输出最后得分最高的M个成绩,保留小数点后3位。分数间有1个空格,行首尾不得有多余空格。

输入样例:

6 5 3
88 90 85 99 60
67 60 80 76 70
90 93 96 99 99
78 65 77 70 72
88 88 88 88 88
55 55 55 55 55

输出样例:

87.667 88.000 96.000

#include<stdio.h> #include<string.h>#include<math.h>int a[10000][10],sum[10000],max[10000],min[10000];int main(){    int m,n,t,i,j,temp;    memset(sum,0,sizeof(sum));    memset(max,0,sizeof(max));    memset(min,100,sizeof(min));    scanf("%d%d%d",&m,&n,&t);    for(i=0;i<m;i++)    {        for(j=0;j<n;j++)        {            scanf("%d",&a[i][j]);            sum[i]+=a[i][j]    ;            if(max[i]<a[i][j])            {                max[i]=a[i][j];            }            if(min[i]>a[i][j])            {                min[i]=a[i][j];            }        }    }    for(i=0;i<m;i++)    {        sum[i]-=max[i]+min[i];    }    for(i=0;i<m-1;i++)    {        for(j=0;j<m-1-i;j++)        {            if(sum[j]<sum[j+1])            {                temp=sum[j];                sum[j]=sum[j+1];                sum[j+1]=temp;            }        }    }    for(i=t-1;i>0;i--)    {        printf("%.3f ",sum[i]*1.0/(n-2));    }    printf("%.3f\n",sum[0]*1.0/(n-2));    return 0;}
时间: 2024-12-11 19:25:47

L2-015. 互评成绩的相关文章

PAT_B_1077_互评成绩计算

题目描述: 在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个最高分和一个最低分,剩下的分数取平均分记为 G?1?? :老师给这个组的评分记为 G?2?? .该组得分为 (G?1?? +G?2?? )/2,最后结果四舍五入后保留整数分. 本题就要求你写个程序帮助老师计算每个组的互评成绩. 输入格式: 输入第一行给出两个正整数 N(> 3)和 M,分别是分组数和满分,均不超过 100

PTA(Basic Level)1077.互评成绩计算

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

PAT Basic 1077 互评成绩计算 (20 分)

在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个最高分和一个最低分,剩下的分数取平均分记为 G?1??:老师给这个组的评分记为 G?2??.该组得分为 (,最后结果四舍五入后保留整数分.本题就要求你写个程序帮助老师计算每个组的互评成绩. 输入格式: 输入第一行给出两个正整数 N(> 3)和 M,分别是分组数和满分,均不超过 100.随后 N 行,每行给出该组得到的 N 个分数(均

PTA乙级(1077 互评成绩计算 (20分),(C++取整)

C++取整 头文件:#include <cmath> 1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 int main() 5 { 6 double a=2.5; 7 cout<<ceil(a)<<endl; //向上取整 8 cout<<floor(a)<<endl; //向下取整 9 cout<<round(a)<<

1077 互评成绩计算

题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805262303477760 题解: 1 #include <iostream> 2 #include<vector> 3 using namespace std; 4 5 int main() { 6 int n, m; 7 cin >> n >> m; 8 for (int i = 0; i < n; i++) {

打字系统

要求写一个打字系统(所要打的字均为字母),6个人可以进行打字练习 ,并且要求程序输出每个人的分数 .错误个数,正确个数以及排名,代码需要用c语言,共100个字符每个一分. 1.所要求的代码为c语言,所以肯定要用结构体,结构体中需要包含姓名,成绩.正确个数.错误个数这几个变量,做个结构体数组. 2.每个人所要打的字符都是随机的,所以要使用rand函数,此程序的头文件必须有#include<stdio.h> #include<time.h>  #include<stdlib.h&

# 《Java技术》第一次作业

(一)学习总结 1.Scanner类数据的使用方法 需要导入java.util.Scanner 每种数据都有对应的输入方法: 需要留意的是String类型,next()方法碰到空格或者回车即结束输入,如果需要输入一整行,包含空格,应该用nextLine(): char 类型,没有输入的方法: package java练习; import java.util.Scanner; public class S1 { public static void main(String[] args) { //

《JAVA》 第一次作业

一.<学习总结> 1.Scanner类实现基本数据输入 在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明. 代码如下 java Scanner in = new Scanner(System.in); int i = in.nextInt(); 输入的数据保存在变量in中,Scanner对于输入的数据类型没有限制,但如果想要对这些数据进行输出就要对以储存的数据进行转换后才能输

Python 高阶函数 -- Sorted

详细内容请参考廖雪峰官网,此处只是一些摘抄,心得与练习的coding. Python内置的sorted()函数就可以对list进行排序: >>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36] sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序: >>> sorted([36, 5, -12, 9, -21], key=abs) [5, 9, -12, -21, 3