1. 程式人生 > >【C++程式設計練習】任意給定 n 個有序整數,求這 n 個有序整數序列的最大值,中位數和最小值

【C++程式設計練習】任意給定 n 個有序整數,求這 n 個有序整數序列的最大值,中位數和最小值

題目來源

CCF模擬試題>>小中大>>201903-1

題目描述

老師給了你n個整陣列成的測量資料,保證有序(可能為升序或降序),可能存在重複的資料。請統計出這組測量資料中的最大值、中位數以及最小值,並按照從大到小的順序輸出這三個數。

輸入格式

從標準輸入讀入資料。第一行輸入一個整數n,在第二行中存在n個有序的整數,表示測量資料,可能為升序或降序排列,可能存在連續多個整數相等,整數與整數之間使用空格隔開。

輸出格式

輸出到標準輸出。包含一行,包括最大值、中位數以及最小值共三個數,並按照從大到小的順序輸出。資料與資料之間使用空格隔開。對於整數請直接輸出整數,對於可能出現的分數,請輸出四捨五入保留1位小數的結果。

樣例輸入1

3
-1 2 4

樣例輸出1

4 2 -1

樣例輸入2

4
-2 -1 3 4

樣例輸出2

4 1 -2

提交程式碼

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
	int i, n, x, max, min;
	float med=0;
	cin >> n;
	cin >> x;
	min = max = x;
	for (i = 1; i < n; i++)
	{
		cin >> x;
		min = (x <= min) ? x : min;
		max = (x >= max) ? x : max;
		if (n % 2 != 0 && i == ((n + 1) / 2 - 1))
			med = x;
		if (n % 2 == 0)
			if (i == (n / 2 - 1) || i == n / 2)
				med+=x/2.0;
	}
	if (n == 1)
		med = x;
	cout << max << " ";
	if (med == int(med))
		cout << int(med);
	else
		cout << fixed << setprecision(1) << med;
	cout<<" " << min;
	return 0;
}

執行結果

評測通過,得分為:100.0,以下為詳細資訊:

使用者名稱 試題名稱 程式碼長度 程式語言 評測結果 得分 時間使用 空間使用
XavierJ 小中大 548B C++ 正確 100 140ms 532.0KB

溫馨提示

要確保程式中沒有“請輸入n”之類的輸入輸出提示,也沒有輸出中間的結果,所有的輸出內容都與題設中的輸出格式相對應。輸出格式(包括換行和大小寫等)與題設中輸出格