@[0Aurora0](/user/657427)
类型问题,`(float)(sum[n-1]/(m-2))`是如何运算的呢?
首先`sun[n-1]`和`(m-2)`均为 int 型,整数除法,向零取整,最后结果是整数,然后`(float)`将结果转化成 float 型整数,因而小数位早已被省去,只是整数化成了浮点数。这个数据还是比较给面子的,有60分。
修改方案:(float)放进去`(float)sum[n-1]/(m-2)`,也可以用 `1.0*sum[n-1]/(m-2)`(1.0默认类型是浮点型),这样就可以保证两边在除法运算的时候至少有一个是浮点型,从而进行的是浮点运算。
(其实建议浮点型统统用 double,精度高)
by Terrible @ 2022-04-08 00:27:45
```#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
double max=0,min=200000000,mark,maxn=0,a,b,c,n,m,sum=0;
cin>>n>>m;
for(int i=0;i<n;i++)
{
for(int i=0;i<m;i++)
{
cin>>a;
if(a<min)min=a;
if(a>max)max=a;
sum=sum+a;
}
mark=(sum-min-max)/(m-2);
if(mark>maxn)maxn=mark;
max=0;
min=200000000;
sum=0;
}
cout<<fixed<<setprecision(2)<<maxn;
return 0;
}
by 皓月星辉 @ 2022-04-08 07:59:59
@[Terrible](/user/195942) 懂了,谢谢94
by 0Aurora0 @ 2022-04-08 08:19:16