close

本題題目:

第 1 題 成績指標
問題描述:
一次考試中,於所有及格學生中獲取最低分數者最為幸運,反之,於所有不及格同
學中,獲取最高分數者,可以說是最為不幸,而此二種分數,可以視為成績指標。
請你設計一支程式,讀入全班成績(人數不固定),請對所有分數進行排序,並分別
找出不及格中最高分數,以及及格中最低分數。
當找不到最低及格分數,表示對於本次考試而言,這是一個不幸之班級,此時請你
印出:「worst case」;反之,當找不到最高不及格分數時,請你印出「best case」。
註:假設及格分數為 60,每筆測資皆為 0~100 間整數,且筆數未定。
輸入格式
第一行輸入學生人數,第二行為各學生分數(0~100 間),分數與分數之間以一個空
白間格。每一筆測資的學生人數為 1~20 的整數。
輸出格式
每筆測資輸出三行。
第一行由小而大印出所有成績,兩數字之間以一個空白間格,最後一個數字後無空
白;
第二行印出最高不及格分數,如果全數及格時,於此行印出 best case;
第三行印出最低及格分數,當全數不及格時,於此行印出 worst case。
範例一:輸入
10
0 11 22 33 55 66 77 99 88 44
範例一:正確輸出
0 11 22 33 44 55 66 77 88 99
55
66
(說明)不及格分數最高為 55,及格分數最低為 66。
範例二:輸入
1
13
範例二:正確輸出
13
13
worst case
(說明)由於找不到最低及格分,因此第三行須印出「worst case」。
首先要知道,輸入的數字要放到一個數字陣列,專門放所有資料,在對這個陣列做buble演算法,讓順序由小排到大,其實這是你也可以做出分類,分類出高於60和小於60分的,分類可以讓我們接下來的答案比較好做。

以下為解題步驟:
(1)載入資料//如不會請至a001
(2)整理陣列,讓它由小排到大,使用buble演算法
以下介紹buble演算法
假設有一個陣列Array{98,38,28,47,38}
你想把它整理成Array{28,38,38,47,98}
在程式裡你你要整理的項跟所有項做比較,這樣說起來很抽象,以下做個例子
int a[5]={98,38,28,47,38}
我先檢測第一個項,如果他跟其他項比,如果比較小,就做交換,繼續比直到比所要項(除了自己),交換程式很簡單。
你要把兩個變數交換很簡單,以下介紹
int a=10,b=20;
如果要把變數數值交換,還需要宣告一個暫存
int temp;
a=temp;
a=b;
b=temp;
這樣就完成了交換,就是這麼簡單。
所以我們套入陣列,以下為解說
我們要診整理的是Array,int k,g,temp;
for(k=0;k<=sizeof(Array)/2;k++)
{
for(g=k+1;g<=sizeof(Array)/2;g++)//k+1的原因是因為不能跟自己做比較
{
if(Array[k]>Array[g])
{
temp = Array[g];
Array[g]=Array[k];
Array[k] = Array[g];
}
}
}
這樣就這樣,就能把陣列由小排到大。
(3)分類大於60和小於60,藉此找出最幸運的人和最不幸運的人
以下為程式碼:
放在此連結:
 
 
 
 
 
arrow
arrow
    全站熱搜

    CoChinoCo 發表在 痞客邦 留言(0) 人氣()