#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;icin>>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