CCF:201903-1 小中大

问题描述

在这里插入图片描述
在这里插入图片描述

思路

对输入的数据进行排序即可得到最小值和最大值,对于中位数,若输入数据个数为奇数,则中位数为中间的一个数,若输入数据个数为偶数,则中位数为中间两个数字的平均值,若中间两个数据之和为偶数则直接除2,若为奇数则需要将计算结果转换为浮点数。

代码

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
	int n;
	cin>>n;
	vector<int> vec;
	for(int i=0;i<n;i++)
	{
		int a;
		cin>>a;
		vec.push_back(a);
	}
	sort(vec.begin(),vec.end());
	int MAX,MID,MIN;
	double mid;
	MIN=vec[0];MAX=vec[vec.size()-1];
	if(vec.size()%2==1)
	{
		MID=vec[vec.size()/2];	
		cout<<MAX<<" "<<MID<<" "<<MIN;
	}
	else
	{
		if((vec[vec.size()/2]+vec[vec.size()/2-1])%2==0)
		{
			MID=(vec[vec.size()/2]+vec[vec.size()/2-1])/2;
			cout<<MAX<<" "<<MID<<" "<<MIN;
		}
		else
		{
			mid=(double(vec[vec.size()/2])+double(vec[vec.size()/2-1]))/2;
			cout<<MAX<<" "<<mid<<" "<<MIN;
		}	
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42729072/article/details/105379928
今日推荐