题目内容
题解
#include<stdio.h>
#include<malloc.h>
double f(double* parr, int hen)
{
int i, j;
double t;
for (i = 0; i < hen - 1; ++i)
{
for (j = 0; j < hen - i - 1; ++j)
{
if (parr[j + 1] < parr[j])
{
t = parr[j + 1];
parr[j + 1] = parr[j];
parr[j] = t;
}
}
}//冒泡排序从小到大
double x = 0;
for (int k = 1; k < hen - 1; ++k)
{
x = x + parr[k];
}
double a;
a = x / (hen - 2);
return a;
}//平均分(去掉最高分和最低分)
double op(double* parr, int hen)
{
int i, j;
double t;
for (i = 0; i < hen - 1; ++i)
{
for (j = 0; j < hen - i - 1; ++j)
{
if (parr[j + 1] < parr[j])
{
t = parr[j + 1];
parr[j + 1] = parr[j];
parr[j] = t;
}
}
}
return parr[hen - 1];
}//len个人中分数最高的输出
void heart(int a, double* p, double* q,int b,int c)
{
if (a == b)
{
q[c] = f(p, b+1);
return;
}
else
return;//将计算出的每个人的分数赋给qarr数组
}
int main(void)
{
int len, hen, k = 0;
double a;
scanf("%d %d", &len,&hen);//len学生的个数hen分数的个数
double * parr;
double * qarr;
parr = (double*)malloc(sizeof(double) * hen);
qarr = (double*)malloc(sizeof(double) * len);
for (int i = 0; i < len; ++i)
{
for (int j = 0; j < hen; ++j)
{
scanf("%lf", &parr[j]);
heart(j, parr, qarr, hen - 1,i);
}
}//每一学生成绩的初始化
a = op(qarr, len);
printf("%.2lf", a);
return 0;
}
这是我用C语言写出来的程序代码,有没有大佬用其他的语言编译一下,互相学习,还是大家还有没有特殊的算法可以解这道题,可以发一下,大家一起讨论!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/15793.html