我这个是C语言版的
by Langrange2021 @ 2021-11-05 16:13:16
似乎是max没有给初始值,要是不过可能还有别的问题,话说你这个写法常数实在太大了,完全可以先全部加一遍,找到最大的之后再除以`m-2`,而且没必要输入一次之后连着跑两次`average`函数,记录一下就能节省很多运行时间
by liubw_ @ 2021-11-05 21:49:23
@[16岁](/user/509435) 我max不是给了average 函数的初值了吗,这样不可以吗
by Langrange2021 @ 2021-11-05 22:38:12
@[Langrange2021](/user/593001) 抱歉我眼瞎了。。。
by liubw_ @ 2021-11-06 14:46:57
给你调好了,AC代码:
```cpp
#include <stdio.h>
double average(int m)
{
int store[200];
int count,max,min,i,sum=0;
double ave;
scanf("%d", &store[0]);
max = store[0];
min = store[0];
for (count = 1; count <= m - 1; count++)
{
scanf("%d", &store[count]);
if (store[count] > max)
{
max = store[count];
}
if (store[count] < min)
{
min = store[count];
}
}
for(i=0;i<=m-1;i++)
{
sum += store[i];
}
sum -= (max + min);
ave = (double)sum / (m - 2); //sum是整型,做除法会自动取证,要得到浮点型需要用(double)声明类型
return ave;
}
int main()
{
int n, m,count;
double max;
scanf("%d%d", &n, &m);
max = average(m);
for (count = 2; count <= n; count++)
{
double ave=average(m); //这里不能用两次average函数,因为数据两次scanf得到的结果不同
if ( ave > max)
{
max = ave;
}
}
printf("%.2lf", max);
return 0;
}
```
by liubw_ @ 2021-11-06 14:54:53
@[16岁](/user/509435) 那个`sum`不用开那么大其实,是我随手乱开到200
by liubw_ @ 2021-11-06 14:55:53
@[16岁](/user/509435) 太感谢你了dl
by Langrange2021 @ 2021-11-06 15:32:28