只得了四十分,求各位大佬指教

P5738 【深基7.例4】歌唱比赛

我这个是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


|