自动统计机 c++一道基础题,不知为啥测试点有两组过不了,求大神帮忙看看代码哪里有问题。急!!

2025-01-07 08:03:01
推荐回答(1个)
回答1:

#include
#include
#include
#include
using namespace std;
int main(){
freopen("stats.in","r",stdin);
freopen("stats.out","w",stdout);
int n,a[20000],i,d;
double sum,m,b;
sum=0;
cin>>n;
if(n<1 || n>500) return 0;
for(i=0;i cin>>a[i];
sum=sum+a[i];
}
sum=sum/n;
cout< sort(a,a+n);
if(n%2!=0){
i=n/2;
m=a[i];
cout< }
else{
i=n/2-1;
d=i+1;
b=(double)(a[d]+a[i])/2;//这个地方要转double,因为你前面的a[d],a[i]都是int,然后/2的话,会认为是整除,但事实上并不是整除
cout< }
return 0;
}

您的程序就是这个地方出了问题。

构造一组中位数是小数的,您的就会挂。

如下面的样例:您的输出是:

    3.50000

    3.00000

.in:
6
1
2
3
4
5
6

.out:
3.500000
3.500000