录入成绩,直接将所有同学给的分数相加,排序,减去最大和最小
省去了遍历一次

注意四舍五入

#include<cstdio>
#include<string.h>
#include<algorithm>
using namespace std;
int main(){
    //分别是分组数和满分
    int N,M;scanf("%d %d",&N,&M);
    for(int i=0;i<N;i++){                                    //每个学生
        //每行给出该组得到的 N 个分数
        int g2,num=0,score=0,data[100];
        scanf("%d",&g2);                                //教师给的成绩
        for(int j=0;j<N-1;j++){                           //接受同学给的成绩并求和
            int temp;scanf("%d",&temp);
            if(temp>=0&&temp<=M){
                score+=temp;data[num++]=temp;
            }
        }
        sort(data,data+num);                            //排序,没有传入比较函数默认升序
        score-=data[0];score-=data[num-1];    //减去最高分和最低分
        float g1 = (float)score/(num-2);            //求成绩
        int final=(int)(((g1+g2)/2)+0.5);            //四舍五入
        printf("%d",final);
        if(i!=N-1) printf("\n");
    }
    return 0;
}