题目思路:
先把数据用数组存储并进行排序。取数组中间的数为中间数,利用for循环寻找小于中间数的数用left变量存储,大于中间数的数用right变量存储。如果left变量的值等于right变量的值则中间数存在并且为数组中间的数,否则中间数不存在。
#include"cstdio"
int a[1001];
int main()
{
int n;
int left=0;
int right=0;
int temp;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int m=0;m<n-1;m++)
{
for(int j=0;j<n-1-m;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(int i=0;i<n;i++)
{
if(a[i]<a[(n-1)/2])
left+=1;
else if(a[i]>a[(n-1)/2])
right+=1;
}
if(left==right)
printf("%d",a[(n-1)/2]);
else printf("-1");
}