CCF-CSP 201903-1:小中大(100分)“附踩坑之后痛的领悟”

请认真读题认真读题认真读题

重要的事情说三遍

不然容易心态爆炸哦 CCF-CSP 201903-1:小中大(100分)“附踩坑之后痛的领悟”_第1张图片

问题分析:

第一行先读取一个整数N,然后第二行读取N个整数(默认已经有序,所以不排序)
分别取最大值,最小值和中位数然后输出。
#include
using namespace std;
int a[100005];
class Qu20190301{
     
	private:
			int N;
			int max;
			int min;
			double median;//记录浮点型中位数 
			int median1;  //记录整型中位数 
	public:
		void ioput(){
     
			cin>>N;
			for(int i=1;i<=N;i++)//录入N个数据 
				cin>>a[i];
			if(a[1]>a[2]){
     		//判断记录是否降序 
				max=a[1];
				min=a[N];
			}else{
     				//记录升序 
				max=a[N];
				min=a[1];
			}
			if(N%2==0){
     			//如果N是偶数 
				if((a[N/2]+a[N/2+1])%2==0)//如果中位数的和是偶数,结果是整数,整数输出 
					cout<<max<<" "<<(a[N/2]+a[N/2+1])/2<<" "<<min;
				else
					cout<<max<<" "<<(a[N/2]+a[N/2+1])/2.0<<" "<<min; //中位数的和是奇数
			}
				 else
				 	cout<<max<<" "<<a[N/2+1]<<" "<<min;//如果N是奇数 
		}
		
}; 
int main(){
     
	 Qu20190301* o=new  Qu20190301();
	o->ioput();
}

测试数据:

example1:
 3
-1 2 4
result1:
4 2 -1

example2:
4
-2 -1 3 4
result2:
4 1 -2

example3:
4
-1 -1 1 1
result3:
1 0 -1

example4:
4
-1 -1 0 1
result4:
1 -0.5 -1

example5:
4
0 0 1 1
result5:
1 0.5 0

避坑技巧:

1、N的限制:不是10^3,而是10^5(如果是10^3,得分20)
2、输出,你的格式应该是整数直接输出,浮点数保留一位小数输出(我第一眼看
到傻乎乎的去百度了C++中如何四舍五入小数点后第几位,后来发现分母是2,小
数点后只可能是0.5)。输出要分开浮点数和整数(不加区分,得分85)。
3.这题有点爆炸哦,看似简单,取暗藏杀机。不过对编程者是一种思维锻炼,很
考验思维的缜密。

CCF-CSP 201903-1:小中大(100分)“附踩坑之后痛的领悟”_第2张图片
CCF-CSP 201903-1:小中大(100分)“附踩坑之后痛的领悟”_第3张图片

你可能感兴趣的:(CCF-CSP 201903-1:小中大(100分)“附踩坑之后痛的领悟”)