```
#include<iostream>
#include<algorithm>
using namespace std;
int n, m;
double av[100] = { 0 }, maxa = 0, sum[100] = { 0 };sum数组也要定为double
int a[100][20] = { 0 };//全部初始化为零
void asort(int a[], int N)
{
int i, j;
for (i = 0; i < N - 1; i++) { //控制n-1趟冒泡
for (j = 0; j < N - 1 - i; j++)
{
if (a[j] > a[j + 1]) { //比较相邻的两个元素
int tmp; //临时变量
tmp = a[j]; //交换
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
}
int main()
{
cin >> n >> m;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> a[i][j];
sum[i] += a[i][j];
}
asort(a[i], m);
}for (int i = 0; i < n; i++) {
sum[i] -= (a[i][0] + a[i][m - 1]);
av[i] = sum[i] / (m - 2);
maxa = max(av[i], maxa);
}
printf("%.2lf", maxa);
return 0;
}
```
by czy0407 @ 2024-03-12 11:46:17
```
av[i] = sum[i] / (m - 2);
```
主要是这句
因为sum为int类型,后面一块是int类型的,会自动四舍五入化成整数
改成
```
av[i] = 1.0*sum[i] / (m - 2);
```
也行
by czy0407 @ 2024-03-12 11:48:07
@[HeyuNas](/user/1298000)
```c
#include<bits/stdc++.h>
using namespace std;
int main(){
int n, m;
float ans = 0;
cin >> n >> m;
for(int i = 0; i < n; i++){
int sum = 0, max = 0, min = 10;
for(int j = 0; j < m; j++){
int score;
cin >> score;
sum += score;
max = std::max(score, max);
min = std::min(score, min);
}
sum = sum - max - min;
ans = std::max(ans, (float)sum / (m - 2));
}
printf("%.2f", ans);
}
```
by chy0817 @ 2024-03-17 15:33:22