CCF認證201903 1小中大

2021-10-02 23:35:15 字數 1497 閱讀 3023

201903-1小中大

吐槽一下

題目不是很難,但是用vc6.0會出現一些bug(推測就是這個ide的問題),問題如下

槽點如圖,都是按照整型輸出-1,竟然會出現兩個不同的值,真的困惑了我半天。。。

演算法設計+題目分析

1、維護乙個num[100010]的陣列;

2、按照整型輸入n個有序整數;

3、根據頭尾確定最大值和最小值,仍然儲存為整型;

4、根據n模2的值是否為0,即n是個偶數還是奇數,奇數轉5,偶數轉6;

5、直接列印最大值、中間值、最小值,結束;

6、偶數時,將中間2個數相加,除以2.0,根據加和的結果是偶數還是奇數決定輸出的中位數小數字數,偶數輸出0位小數,奇數輸出1位小數。

幾個核心點

1、當把乙個整數運算賦給乙個double時要注意加.0

mid=

(num[n/2-

1]+num[n/2]

)/2.0;

//這裡如果除以2,就只有80分

2、c語言預設的保留小數字數的操作就是四捨五入,不需要自己規定

double mid;

printf

("%.1f "

, mid)

3、判斷中位數是否為整數時,可以用它之前的加和是否能被2整除來判斷

if

((num[n/2-

1]+num[n/2]

)%2==

0)printf

("%.0f "

, mid)

;

1、scanf和printf的資料格式一定要對應,涉及到資料儲存大小

const

int max=

100010

;int num[max]

;scanf

("%d"

,&num[i]);

//因為num陣列是整型,此處必須整型輸入

double mid;

printf

("%.0f "

, mid)

;//此處必須浮點數輸出

環境visual c++6.0

#include

const

int max=

100010

;int num[max]

;int

main()

double mid;

int max, min;

if(num[0]

>num[n-1]

)else

if(n%2==

0)else

return0;

}

CSP認證 201903 1 小中大

問題鏈結 ccf201903 1。問題描述 輸入一組數,找出最大值,中位數和最小值並輸出 問題分析 簡單模擬問題,只需判斷中位數是否需要以保留一位小數的格式輸出,本解法是按照題意,先求出中位數,再對首位 末位和中位數進行排序 程式說明 1.輸入個數n和數字 2.判斷中位數是否需要取平均值 3.判斷中...

CCF 201903 1小中大 (100分)

本題看似簡單實則暗藏殺機,首先必須得完全理解題意 按從大到小的順序依次輸出最大值 中位數以及最小值,其中中位數若為整數則輸出為整數,若為分數則保留一位小數並輸出。這裡最大值以及最小值得輸出沒有什麼好說的,關鍵是中位數的輸出,建議使用c語言printf 的輸出方式,便於進行格式控制,嚴格遵循整數直接輸...

ccf試題1 小中大

題目背景 在資料分析中,最小值最大值以及中位數是常用的統計資訊。題目描述 老師給了你n個整數組成的測量資料,保證有序 可能為公升序或降序 可能存在重複的資料。請統計出這組測量資料的最大值 中位數以及最小值,並按照從大到小的順序輸出這三個數。輸入格式 從標準輸入讀入資料。第一行輸入乙個整數n,在第二行...