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,在第二行...